{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f3f863639a0>]"
      ]
     },
     "execution_count": 213,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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gGUIIgAAwDJBG0QefvhhzZgxQ7GxsUpKSurSa4wxuu+++9S/f3/FxMRo7ty52rt3r1eb6upq3XjjjXI4HEpKStKtt96quro6H/Tgs3W3loMHD8pms3X6ePHFFz3tOnt+yZIlfdElLz35XV944YWn1f7tb3/bq83hw4c1b948xcbGKj09XT/60Y/U2trqy66cUXf7WF1drTvuuEMFBQWKiYlRbm6u7rzzTjmdTq92Vh7Dxx57TIMGDVJ0dLSmTp2qtWvXnrX9iy++qOHDhys6OlpjxozRG2+84fV8Vz6Xfa07fXzyySd1wQUXqF+/furXr5/mzp17Wvubb775tON1+eWX+7obZ9Sd/j3zzDOn1R4dHe3VJtCPYWd/V2w2m+bNm+dp40/HcMWKFbrqqquUlZUlm82mV1999TNfs3z5ck2cOFF2u135+fl65plnTmvT3c92l5kgdd9995nf/OY35u677zaJiYldes2iRYtMYmKiefXVV82WLVvM5z//eTN48GBz4sQJT5vLL7/cjBs3zqxevdp8+OGHJj8/39xwww0+6sXZdbeW1tZWc+zYMa/HAw88YOLj401tba2nnSTz9NNPe7U79XfQV3ryu549e7a57bbbvGp3Op2e51tbW83o0aPN3LlzzaZNm8wbb7xhUlNTzYIFC3zdnU51t4/btm0z1157rXnttddMUVGRWbZsmRk6dKj5whe+4NXOqmO4ZMkSExUVZZ566imzY8cOc9ttt5mkpCRTVlbWafuVK1ea8PBw8+tf/9rs3LnT/Od//qeJjIw027Zt87TpyueyL3W3j1/5ylfMY489ZjZt2mR27dplbr75ZpOYmGiOHDniaTN//nxz+eWXex2v6urqvuqSl+727+mnnzYOh8Or9tLSUq82gX4Mq6qqvPq3fft2Ex4ebp5++mlPG386hm+88Yb52c9+Zl5++WUjybzyyitnbb9//34TGxtr7r77brNz507zhz/8wYSHh5u33nrL06a7v7PuCNog0uHpp5/uUhBxu90mMzPTPPLII55tNTU1xm63m3/84x/GGGN27txpJJl169Z52rz55pvGZrOZo0eP9nrtZ9NbtYwfP958/etf99rWlX+4vtbT/s2ePdt8//vfP+Pzb7zxhgkLC/P6Q/n4448bh8NhmpqaeqX2ruqtY/jCCy+YqKgo09LS4tlm1TGcMmWKuf322z0/t7W1maysLLNw4cJO23/5y1828+bN89o2depU861vfcsY07XPZV/rbh8/rbW11SQkJJi//vWvnm3z5883V199dW+X2iPd7d9n/Y0NxmP429/+1iQkJJi6ujrPNn86hqfqyt+CH//4x2bUqFFe26677jpz2WWXeX4+19/Z2QTt0Ex3HThwQKWlpZo7d65nW2JioqZOnapVq1ZJklatWqWkpCSdd955njZz585VWFiY1qxZ06f19kYtGzZs0ObNm3Xrrbee9tztt9+u1NRUTZkyRU899VSXbuXcm86lf88++6xSU1M1evRoLViwQA0NDV7vO2bMGGVkZHi2XXbZZXK5XNqxY0fvd+Qseuvfk9PplMPhUESE962j+voYNjc3a8OGDV6fobCwMM2dO9fzGfq0VatWebWX2o9HR/uufC77Uk/6+GkNDQ1qaWlRcnKy1/bly5crPT1dBQUF+s53vqOqqqperb0retq/uro6DRw4UDk5Obr66qu9PkvBeAwXL16s66+/XnFxcV7b/eEY9sRnfQ5743d2Nn5907u+VFpaKkleX1AdP3c8V1paqvT0dK/nIyIilJyc7GnTV3qjlsWLF2vEiBGaMWOG1/YHH3xQF198sWJjY/XOO+/ou9/9rurq6nTnnXf2Wv2fpaf9+8pXvqKBAwcqKytLW7du1U9+8hMVFhbq5Zdf9rxvZ8e447m+1BvHsLKyUg899JC++c1vem234hhWVlaqra2t09/v7t27O33NmY7HqZ+5jm1natOXetLHT/vJT36irKwsrz/ql19+ua699loNHjxY+/bt009/+lNdccUVWrVqlcLDw3u1D2fTk/4VFBToqaee0tixY+V0OvXoo49qxowZ2rFjh7Kzs4PuGK5du1bbt2/X4sWLvbb7yzHsiTN9Dl0ul06cOKHjx4+f87/7swmoIHLvvffqV7/61Vnb7Nq1S8OHD++jinpfV/t4rk6cOKHnnntOP//5z0977tRtEyZMUH19vR555JFe+RLzdf9O/UIeM2aM+vfvrzlz5mjfvn0aMmRIj9+3O/rqGLpcLs2bN08jR47UL37xC6/nfHkM0XOLFi3SkiVLtHz5cq8Jnddff73n/8eMGaOxY8dqyJAhWr58uebMmWNFqV02ffp0TZ8+3fPzjBkzNGLECD3xxBN66KGHLKzMNxYvXqwxY8ZoypQpXtsD+RhaLaCCyD333KObb775rG3y8vJ69N6ZmZmSpLKyMvXv39+zvaysTOPHj/e0KS8v93pda2urqqurPa8/V13t47nW8tJLL6mhoUFf+9rXPrPt1KlT9dBDD6mpqemc70PQV/3rMHXqVElSUVGRhgwZoszMzNNmepeVlUlSQB3D2tpaXX755UpISNArr7yiyMjIs7bvzWN4JqmpqQoPD/f8PjuUlZWdsT+ZmZlnbd+Vz2Vf6kkfOzz66KNatGiR3nvvPY0dO/asbfPy8pSamqqioqI+/RI7l/51iIyM1IQJE1RUVCQpuI5hfX29lixZogcffPAz92PVMeyJM30OHQ6HYmJiFB4efs7/Ls7qnGeZ+LnuTlZ99NFHPducTmenk1XXr1/vafP2229bOlm1p7XMnj37tCstzuSXv/yl6devX49r7Yne+l1/9NFHRpLZsmWLMeaTyaqnzvR+4oknjMPhMI2Njb3XgS7oaR+dTqeZNm2amT17tqmvr+/SvvrqGE6ZMsV873vf8/zc1tZmBgwYcNbJqp/73Oe8tk2fPv20yapn+1z2te720RhjfvWrXxmHw2FWrVrVpX0UFxcbm81mli5des71dldP+neq1tZWU1BQYH7wgx8YY4LnGBrT/n1it9tNZWXlZ+7DymN4KnVxsuro0aO9tt1www2nTVY9l38XZ63xnN/BTx06dMhs2rTJc3nqpk2bzKZNm7wuUy0oKDAvv/yy5+dFixaZpKQks3TpUrN161Zz9dVXd3r57oQJE8yaNWvMRx99ZIYOHWrp5btnq+XIkSOmoKDArFmzxut1e/fuNTabzbz55punvedrr71mnnzySbNt2zazd+9e86c//cnExsaa++67z+f9+bTu9q+oqMg8+OCDZv369ebAgQNm6dKlJi8vz8yaNcvzmo7Ldy+99FKzefNm89Zbb5m0tDRLL9/tTh+dTqeZOnWqGTNmjCkqKvK6VLC1tdUYY+0xXLJkibHb7eaZZ54xO3fuNN/85jdNUlKS5yqlm266ydx7772e9itXrjQRERHm0UcfNbt27TL3339/p5fvftbnsi91t4+LFi0yUVFR5qWXXvI6Xh1/i2pra80Pf/hDs2rVKnPgwAHz3nvvmYkTJ5qhQ4f2eTjuSf8eeOAB8/bbb5t9+/aZDRs2mOuvv95ER0ebHTt2eNoE+jHsMHPmTHPdddedtt3fjmFtba3nO0+S+c1vfmM2bdpkDh06ZIwx5t577zU33XSTp33H5bs/+tGPzK5du8xjjz3W6eW7Z/udnYugDSLz5883kk57vP/++542OrnWQge3221+/vOfm4yMDGO3282cOXNMYWGh1/tWVVWZG264wcTHxxuHw2FuueUWr3DTlz6rlgMHDpzWZ2OMWbBggcnJyTFtbW2nveebb75pxo8fb+Lj401cXJwZN26c+fOf/9xpW1/rbv8OHz5sZs2aZZKTk43dbjf5+fnmRz/6kdc6IsYYc/DgQXPFFVeYmJgYk5qaau655x6vS1/7Unf7+P7773f671qSOXDggDHG+mP4hz/8weTm5pqoqCgzZcoUs3r1as9zs2fPNvPnz/dq/8ILL5hhw4aZqKgoM2rUKPP66697Pd+Vz2Vf604fBw4c2Onxuv/++40xxjQ0NJhLL73UpKWlmcjISDNw4EBz22239cof+J7qTv/uuusuT9uMjAxz5ZVXmo0bN3q9X6AfQ2OM2b17t5Fk3nnnndPey9+O4Zn+TnT0af78+Wb27NmnvWb8+PEmKirK5OXleX03djjb7+xc2Izp4+syAQAATmIdEQAAYBmCCAAAsAxBBAAAWIYgAgAALEMQAQAAliGIAAAAyxBEAACAZQgiAADAMgQRAABgGYIIAACwDEEEAABYhiACAAAs8/8BNjrAdMr0Pp0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(-1, 1, 0.01)\n",
    "y = 1.5957691216057308 * ( x + 0.044715 * (x**3))\n",
    "k = y + 0\n",
    "k[k < 0] = 0\n",
    "z = x / (np.exp(-np.abs(y)) + 1) * np.exp(k)\n",
    "# z = x / (np.exp(y) + 1) \n",
    "# z = k\n",
    "plt.plot(x, z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.00047323457781780695\n",
      "0.020318788477036807\n"
     ]
    },
    {
     "data": {
      "image/png": "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f++994YwedHUqlXriLxPPfXUMZfJzc1Vz549VbFiRZUtW1Y33HCDdu3aFaLERfPbb7/pjjvuUFpamkqVKqXatWtr2LBh8vl8x1wunI/jhAkTVKtWLcXHx6tFixb6+uuvjzn+7bffVv369RUfH69GjRrpgw8+CFHSohs9erTOO+88JSQkqEqVKurYsaPWr19/zGUmT558xLGKj48PUeKie/zxx4/IW79+/WMuE0nHUCr87xXLstSzZ89Cx4f7MVy8eLGuueYapaSkyLIszZ07t8B8Y4yGDh2qatWqqVSpUmrTpo1++eWX4663qM/lExVV5cPn86lTp0667777Cp0fCATUvn17+Xw+LVmyRG+88YYmT56soUOHHnO93bp109q1a7Vw4UK99957Wrx4se6+++7i2IUiadWqlXbu3FngceeddyotLU3NmjU75rJ33XVXgeXGjBkTotQnZ8SIEQXy9urV65jjH3zwQb377rt6++23tWjRIu3YsUPXX399iNIWzbp162TbtiZOnKi1a9fq2Wef1UsvvaRHH330uMuG43GcMWOG+vXrp2HDhmnVqlVq0qSJ2rZtq927dxc6fsmSJeratavuuOMOrV69Wh07dlTHjh21Zs2aECc/MYsWLVLPnj21bNkyLVy4UHl5ebriiiuUk5NzzOUSExMLHKvNmzeHKPHJadCgQYG8X3755VHHRtoxlKRvvvmmwP4tXLhQktSpU6ejLhPOxzAnJ0dNmjTRhAkTCp0/ZswYvfDCC3rppZe0fPlylSlTRm3btlVubu5R11nU53KRmCg0adIkk5SUdMT0Dz74wLhcLpOenp4/7cUXXzSJiYnG6/UWuq4ff/zRSDLffPNN/rQPP/zQWJZltm/fHvTsp8Ln85nKlSubESNGHHPcxRdfbPr06ROaUEFQs2ZN8+yzz57w+AMHDpjY2Fjz9ttv50/76aefjCSzdOnSYkgYfGPGjDFpaWnHHBOux7F58+amZ8+e+T8HAgGTkpJiRo8eXej4m266ybRv377AtBYtWph77rmnWHMGy+7du40ks2jRoqOOOdrfSeFq2LBhpkmTJic8PtKPoTHG9OnTx9SuXdvYtl3o/Eg6hpLMnDlz8n+2bdskJyebZ555Jn/agQMHjMfjMdOmTTvqeor6XC6KqDrzcTxLly5Vo0aNVLVq1fxpbdu2VWZmptauXXvUZcqVK1fgTEKbNm3kcrm0fPnyYs9cFPPmzdPevXvVo0eP446dOnWqKlWqpIYNG2rQoEE6ePBgCBKevKeeekoVK1ZU06ZN9cwzzxzzUtnKlSuVl5enNm3a5E+rX7++atSooaVLl4Yi7inLyMhQhQoVjjsu3I6jz+fTypUrC/zuXS6X2rRpc9Tf/dKlSwuMl/54XkbSsZJ03OOVnZ2tmjVrKjU1Vddee+1R/84JF7/88otSUlJ0+umnq1u3btqyZctRx0b6MfT5fJoyZYpuv/32Y36haaQdw8M2bdqk9PT0AscoKSlJLVq0OOoxOpnnclGE3RfLFaf09PQCxUNS/s/p6elHXaZKlSoFpsXExKhChQpHXcYpr732mtq2bXvcL+b75z//qZo1ayolJUXff/+9BgwYoPXr12v27NkhSlo0vXv31jnnnKMKFSpoyZIlGjRokHbu3Klx48YVOj49PV1xcXFH3PdTtWrVsDtmhdmwYYPGjx+vsWPHHnNcOB7HPXv2KBAIFPo8W7duXaHLHO15GQnHyrZt9e3bV+eff74aNmx41HH16tXT66+/rsaNGysjI0Njx45Vq1attHbt2mL/Is2T0aJFC02ePFn16tXTzp07NXz4cF144YVas2aNEhISjhgfycdQkubOnasDBw7otttuO+qYSDuGf3X4OBTlGJ3Mc7kowr58DBw4UE8//fQxx/z000/HvRkqkpzMPm/btk0LFizQzJkzj7v+v96v0qhRI1WrVk2tW7fWxo0bVbt27ZMPXgRF2cd+/frlT2vcuLHi4uJ0zz33aPTo0WH90ccncxy3b9+uK6+8Up06ddJdd911zGXD4TiWdD179tSaNWuOeT+EJLVs2VItW7bM/7lVq1Y688wzNXHiRD3xxBPFHbPI2rVrl//nxo0bq0WLFqpZs6ZmzpypO+64w8FkxeO1115Tu3btlJKSctQxkXYMw13Yl4/+/fsfs41K0umnn35C60pOTj7iTt3D74BITk4+6jJ/v7nG7/dr3759R13mVJ3MPk+aNEkVK1ZUhw4diry9Fi1aSPrjX9yhetE6lePaokUL+f1+/fbbb6pXr94R85OTk+Xz+XTgwIECZz927dpVbMesMEXdxx07dujSSy9Vq1at9PLLLxd5e04cx7+rVKmS3G73Ee8sOtbvPjk5uUjjw8UDDzyQfwN6Uf/lGxsbq6ZNm2rDhg3FlC64ypUrp7p16x41b6QeQ0navHmzPv744yKfMYykY3j4OOzatUvVqlXLn75r1y6dffbZhS5zMs/lIjnlu0bC0PFuON21a1f+tIkTJ5rExESTm5tb6LoO33C6YsWK/GkLFiwIqxtObds2aWlppn///ie1/Jdffmkkme+++y7IyYrHlClTjMvlMvv27St0/uEbTmfNmpU/bd26dWF9w+m2bdtMnTp1TJcuXYzf7z+pdYTLcWzevLl54IEH8n8OBAKmevXqx7zh9Oqrry4wrWXLlmF7s6Jt26Znz54mJSXF/Pzzzye1Dr/fb+rVq2cefPDBIKcrHllZWaZ8+fLm+eefL3R+pB3Dvxo2bJhJTk42eXl5RVounI+hjnLD6dixY/OnZWRknNANp0V5Lhcp4ymvIYxs3rzZrF692gwfPtyULVvWrF692qxevdpkZWUZY/74j6Vhw4bmiiuuMN9++62ZP3++qVy5shk0aFD+OpYvX27q1atntm3blj/tyiuvNE2bNjXLly83X375palTp47p2rVryPfvaD7++GMjyfz0009HzNu2bZupV6+eWb58uTHGmA0bNpgRI0aYFStWmE2bNpl33nnHnH766eaiiy4KdewTsmTJEvPss8+ab7/91mzcuNFMmTLFVK5c2dx66635Y/6+j8YYc++995oaNWqYTz/91KxYscK0bNnStGzZ0oldOK5t27aZM844w7Ru3dps27bN7Ny5M//x1zGRchynT59uPB6PmTx5svnxxx/N3XffbcqVK5f/LrNbbrnFDBw4MH/8V199ZWJiYszYsWPNTz/9ZIYNG2ZiY2PNDz/84NQuHNN9991nkpKSzOeff17gWB08eDB/zN/3cfjw4WbBggVm48aNZuXKlaZLly4mPj7erF271oldOK7+/fubzz//3GzatMl89dVXpk2bNqZSpUpm9+7dxpjIP4aHBQIBU6NGDTNgwIAj5kXaMczKysp/zZNkxo0bZ1avXm02b95sjDHmqaeeMuXKlTPvvPOO+f777821115r0tLSzKFDh/LXcdlll5nx48fn/3y85/KpiKry0b17dyPpiMdnn32WP+a3334z7dq1M6VKlTKVKlUy/fv3L9B4P/vsMyPJbNq0KX/a3r17TdeuXU3ZsmVNYmKi6dGjR36hCQddu3Y1rVq1KnTepk2bCvwOtmzZYi666CJToUIF4/F4zBlnnGEefvhhk5GREcLEJ27lypWmRYsWJikpycTHx5szzzzTjBo1qsCZqr/vozHGHDp0yNx///2mfPnypnTp0ua6664r8GIeTiZNmlTof7d/PTEZacdx/PjxpkaNGiYuLs40b97cLFu2LH/exRdfbLp3715g/MyZM03dunVNXFycadCggXn//fdDnPjEHe1YTZo0KX/M3/exb9+++b+PqlWrmquuusqsWrUq9OFPUOfOnU21atVMXFycqV69uuncubPZsGFD/vxIP4aHLViwwEgy69evP2JepB3Dw69df38c3gfbts2QIUNM1apVjcfjMa1btz5iv2vWrGmGDRtWYNqxnsunwjLGmFO/eAMAAHBiStTnfAAAAOdRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEhRPgAAQEj9PyAoUBfv4njKAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "x = np.arange(-10, 10, 0.1)\n",
    "x_torch=torch.tensor(x)\n",
    "y = ((x ** 3) * 0.044715 + x) * -1.59576912\n",
    "y = x / (1 + np.exp(y))\n",
    "torch_y = torch.functional.F.gelu(x_torch).numpy()\n",
    "sigmod_y =  x / (1 + np.exp(-1.702 * x))\n",
    "plt.plot(x, y)\n",
    "plt.plot(x,sigmod_y)\n",
    "plt.plot(x, torch_y)\n",
    "delta = y - torch_y\n",
    "print(np.max(np.abs(delta)))\n",
    "print(np.max(np.abs(torch_y - sigmod_y)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.00047323462874194686\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "x = np.arange(-6, 6, 0.1)\n",
    "x_torch=torch.tensor(x)\n",
    "a = 0.044715\n",
    "b = -1.59576912\n",
    "y = ((x ** 3) * a + x) * -1.5957691216057308\n",
    "y = x / (1 + np.exp(y))\n",
    "torch_y = torch.functional.F.gelu(x_torch).numpy()\n",
    "print(np.max(y - torch_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7978845608028654"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sqrt(2 / np.pi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x - \\frac{x^{3}}{3} + \\frac{2 x^{5}}{15} - \\frac{17 x^{7}}{315} + \\frac{62 x^{9}}{2835} - \\frac{1382 x^{11}}{155925} + \\frac{21844 x^{13}}{6081075} - \\frac{929569 x^{15}}{638512875} + \\frac{6404582 x^{17}}{10854718875} - \\frac{443861162 x^{19}}{1856156927625} + O\\left(x^{20}\\right)$"
      ],
      "text/plain": [
       "x - x**3/3 + 2*x**5/15 - 17*x**7/315 + 62*x**9/2835 - 1382*x**11/155925 + 21844*x**13/6081075 - 929569*x**15/638512875 + 6404582*x**17/10854718875 - 443861162*x**19/1856156927625 + O(x**20)"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sympy import symbols, tanh, sqrt, series\n",
    "\n",
    "# 定义符号变量\n",
    "x = symbols('x')\n",
    "\n",
    "# 定义tanh函数\n",
    "f = tanh(x)\n",
    "\n",
    "# 计算tanh(x)的泰勒级数展开，默认在x=0点展开\n",
    "taylor_series = series(f, x, n=20, x0=0)  # 可以指定展开到第几阶\n",
    "\n",
    "# 打印展开结果\n",
    "taylor_series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0004732355193235449\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f5765e25340>]"
      ]
     },
     "execution_count": 208,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "x = np.arange(-5.75, 5.75, 0.0001)\n",
    "x_torch=torch.tensor(x)\n",
    "torch_y = torch.functional.F.gelu(x_torch).numpy()\n",
    "a = np.sqrt(2/np.pi)\n",
    "y = 0.5 * x * (1 + np.tanh(a *(x + 0.044715 * x ** 3)))\n",
    "# y= x / (1 + np.exp(-1.702099 * x))\n",
    "# y = x - (x**3)/3 + 2 * x**5 / 15 - 17 * x**7 /315 + 62 * x **9 /2835 - 1382 * x**11 / 155925 \\\n",
    "#     + 21844 * x**13 / 6081075\n",
    "# torch_y = torch.tanh(x_torch).numpy()\n",
    "delta = y - torch_y\n",
    "print(np.max(np.abs(delta)))\n",
    "plt.plot(x, y)\n",
    "plt.plot(x, torch_y)\n",
    "# print(torch_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6272487 - 0.4619553*(0.8*x - 1.0)**2 + 0.3272184*(0.8*x - 1.0)**3 - 0.01503761*(0.8*x - 1.0)**4 - 0.1439851*(0.8*x - 1.0)**5 + 0.08125791*(0.8*x - 1.0)**6 + 0.01729003*(0.8*x - 1.0)**7 - 0.03396081*(0.8*x - 1.0)**8 + 0.006538899*(0.8*x - 1.0)**9 + 0.007390152*(0.8*x - 1.0)**10 - 0.003771352*(0.8*x - 1.0)**11 - 0.0007674394*(0.8*x - 1.0)**12 + 0.001015508*(0.8*x - 1.0)**13 - 6.854961e-5*(0.8*x - 1.0)**14 - 0.0001821712*(0.8*x - 1.0)**15 + 4.807634e-5*(0.8*x - 1.0)**16 + 2.255684e-5*(0.8*x - 1.0)**17 - 1.177173e-5*(0.8*x - 1.0)**18 - 1.567755e-6*(0.8*x - 1.0)**19 + 0.2365211*x + O((x - 5/4)**20, (x, 5/4))\n"
     ]
    },
    {
     "data": {
      "image/png": "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Tk5WaGioDh8+rI0bN2rDhg0aNGiQHnvssRa/A8XUqVM9PW4/tXTp0mO2jR07VmPHjj3h8SwWix544AE98MADp1XHjgMVOlLrUlhI/d+w/BtvHXyntD4+89blzZ93kyZPAPBuISEh2rt3ryIiIhQfH6/f/e53OnTokI4cOaK4uDgNHDhQmZmZjXrBAsE7ufv0l7fXamCiXe9Nu7RJM8oAwJd5ZY8dgNOTnJysvLw8ZWZm6siRI3rkkUeUkJBgdlmmW3/0+rrUDpF6z9xSAKBVcI0d4AfuuOMO/fKXv9RFF10ki8Wi119/XatWrdKRI0fMLs1U6/aVSuKOEwACB8EO8AO33HKLVq9eraysLBmGoTlz5mjo0KGKjIxUnz59NG7cOD366KP65JNPzC611dS53NpYUD9xok8ywQ5AYOAaO8DP9OzZUzk5OWrTpo3WrVunvLw8z2P9+vUBc3vALYVlynx6mdqE2LR82lDFxERzjR0Av+cTPXYfffSR0tPTFRYWppiYmCatXYWzU11drQEDBshisSgvL8/scvzWrl27dP3116tr164KCwtT9+7dNWvWLNXU1JzxMbdt26a4uDiFhYUpPT1dN9xwg5577jnl5OQE1H1SPcOwHaL08ssvSZLi4+OVnp6ulStXmliZ/5o9e7bOP/98RUREKCEhQWPGjNGWLVvMLitgPProo551H9Fy8vPzde2116pdu3YKCwtT3759W/SOPqfL64Pdu+++q+uuu06TJk3S2rVrtXz5cs+K9mg5d911l5KTk80uw+9t3rxZbrdbL7zwgjZs2KC///3vev7553XPPfe0yPud6lY0/qRh4kRIeaHn8/zyyy/Vv39/ZWZmqri42Mzy/NIXX3yhm2++Wd98840WLVqk2tpajRo1ShUVFWaX5vdWrVqlF154odFt99D8Dh8+rAsvvFDBwcH65JNPtHHjRj355JOexd+9guHFamtrjQ4dOhgvv/yy2aUElI8//tjo3bu3sWHDBkOS8e2335pdUkB57LHHjK5du5pdhs8bM+cro/PdHxp9f/EHY/LkyYYkw+FwGC6Xy0hOTjZmz55tdol+r7i42JBkfPHFF2aX4tfKysqMnj17GosWLTIuvvhi49ZbbzW7JL919913G8OHDze7jJPy6h67NWvWKD8/X1arVQMHDlT79u112WWXaf369WaX5reKioo0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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x7f5817f67070>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sympy import symbols, erf, series\n",
    "from sympy.plotting import plot\n",
    "# 定义符号变量\n",
    "x = symbols('x')\n",
    "f = erf(x)\n",
    "taylor_series = series(f, x, n=20, x0=1.25)  # 可以指定展开到第几阶\n",
    "# 打印展开结果\n",
    "print(taylor_series.evalf(7))\n",
    "plot(f, (x, -6, 6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 295,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.00010052463027365732\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f3f84486cd0>]"
      ]
     },
     "execution_count": 295,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "x = np.arange(0, 3.87, 0.001)\n",
    "tx = x\n",
    "x_torch=torch.tensor(x)\n",
    "x = x / np.sqrt(2)\n",
    "y = 0.6272487 - 0.4619553*(0.8*x - 1.0)**2 + 0.3272184*(0.8*x - 1.0)**3 - 0.01503761*(0.8*x - 1.0)**4 - 0.1439851*(0.8*x - 1.0)**5 + 0.08125791*(0.8*x - 1.0)**6 + 0.01729003*(0.8*x - 1.0)**7 - 0.03396081*(0.8*x - 1.0)**8 + 0.006538899*(0.8*x - 1.0)**9 + 0.007390152*(0.8*x - 1.0)**10 - 0.003771352*(0.8*x - 1.0)**11 - 0.0007674394*(0.8*x - 1.0)**12 + 0.001015508*(0.8*x - 1.0)**13 - 6.854961e-5*(0.8*x - 1.0)**14 - 0.0001821712*(0.8*x - 1.0)**15 + 4.807634e-5*(0.8*x - 1.0)**16 + 2.255684e-5*(0.8*x - 1.0)**17 - 1.177173e-5*(0.8*x - 1.0)**18 - 1.567755e-6*(0.8*x - 1.0)**19 + 0.2365211*x \n",
    "y = 0.5 * tx * (1 + y)\n",
    "torch_y = torch.functional.F.gelu(x_torch).numpy()\n",
    "print(np.max(np.abs(y - torch_y)))\n",
    "plt.plot(tx, y)\n",
    "plt.plot(tx, torch_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.4142135623730951"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sqrt(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 303,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.285389195920347 + 0.0624288866075758*(0.8*x - 1.0)**2 - 0.181155251316626*(0.8*x - 1.0)**3 + 0.0835375377666013*(0.8*x - 1.0)**4 + 0.0188930193743427*(0.8*x - 1.0)**5 - 0.0255859508701379*(0.8*x - 1.0)**6 + 0.0021149769673718*(0.8*x - 1.0)**7 + 0.622661583069422*x + O((x - 5/4)**8, (x, 5/4))\n"
     ]
    }
   ],
   "source": [
    "from sympy import symbols, erf, exp, sqrt, series\n",
    "\n",
    "# 定义符号变量\n",
    "x = symbols('x')\n",
    "\n",
    "# 定义GELU函数\n",
    "def gelu(x):\n",
    "    # return 0.5 * x + 0.5 * x * erf(x / sqrt(2))\n",
    "    return 0.5 * x * erf(x / sqrt(2))\n",
    "\n",
    "# 计算GELU(x)的泰勒级数展开，默认在x=0点展开\n",
    "taylor_series = series(gelu(x), x, n=8, x0=1.25)  # 可以指定展开到第几阶\n",
    "\n",
    "# 打印展开结果\n",
    "print(taylor_series.evalf())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 313,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.0049)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f3f7fe64bb0>]"
      ]
     },
     "execution_count": 313,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "x = torch.arange(0, 2, 0.01)\n",
    "t = 0.5 * x\n",
    "# y = t  + t * torch.erf(x / np.sqrt(2))\n",
    "y = t -0.285389195920347 + 0.0624288866075758*(0.8*x - 1.0)**2 - 0.181155251316626*(0.8*x - 1.0)**3 + 0.0835375377666013*(0.8*x - 1.0)**4 + 0.0188930193743427*(0.8*x - 1.0)**5 - 0.0255859508701379*(0.8*x - 1.0)**6 + 0.0021149769673718*(0.8*x - 1.0)**7 + 0.622661583069422*x\n",
    "torch_y = torch.functional.F.gelu(x)\n",
    "delta = y - torch_y\n",
    "print(torch.max(torch.abs(delta)))\n",
    "plt.plot(x, y)\n",
    "plt.plot(x, torch_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 9.51056516e-01  5.87785252e-01  6.12323400e-17 -5.87785252e-01\n",
      " -9.51056516e-01]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/media/aaa/data/codes/bisai2/venv/lib/python3.9/site-packages/numpy/polynomial/chebyshev.py:1671: RankWarning: The fit may be poorly conditioned\n",
      "  return pu._fit(chebvander, x, y, deg, rcond, full, w)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 选择切比雪夫节点\n",
    "n = 5\n",
    "nodes = np.cos((2 * np.arange(1, n + 1) - 1) / (2 * n) * np.pi)\n",
    "# 计算逼近多项式的系数\n",
    "coefficients = np.polynomial.chebyshev.chebfit(nodes, np.exp(nodes), n)\n",
    "\n",
    "# 计算逼近值\n",
    "x = np.linspace(-1, 1, 100)\n",
    "approximation = np.polynomial.chebyshev.chebval(x, coefficients)\n",
    "\n",
    "# 绘制结果\n",
    "plt.plot(x, np.exp(x), label='Original function $e^x$')\n",
    "plt.plot(x, approximation, label='Chebyshev approximation')\n",
    "plt.scatter(nodes, np.exp(nodes), color='red', label='Chebyshev nodes')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-3.512339572e-9*x**13 + 2.64526617e-7*x**11 - 7.929488134e-6*x**9 + 0.000110612384*x**7 + 6.518995814e-5*x**5 - 0.07266616915*x**3 - 1.595769883*x\n"
     ]
    },
    {
     "data": {
      "image/png": "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s+nDDz+sjigBqaqP//Tp05Wfn6+JEyeajux3qvoc/Nb+/ft16aWXaujQoRo5cqSh5IBnjBo1Shs3btSsWbNMRwkYGRkZGjt2rN577z2FhYWZjhOQ3G63unTposmTJys1NVW33XabRo4cqddff73G7rNaDp645557dPPNN59ynebNm+vgwYOSpPbt21cuDw0NVfPmzbV3797qiBKQqvr4f/3111q+fPnv5qrr1q2bbrjhhhr9C8LfVfU5+NWBAwd00UUXqVevXpVHbKL61a1bVw6HQ1lZWcctP3TokOrXr28oVeAZPXq0Fi5cqO+++06NGzc2HSdgrF69WllZWerSpUvlMpfLpe+++06vvPKKnE6nHA7vmXHGHzVo0OC4ziNJ7dq109y5c2vsPqul2MXHxys+Pv6063Xt2lWhoaHatm2b+vTpI0kqKyvTnj171LRp0+qIEpCq+vi//PLLeuqppyqvHzhwQAMHDtTs2bPVs2fPmozo96r6HEgVW+ouuuiiyi3Wdrvvzd3qK0JCQtS1a1ctWbKkcpnb7dZXX32l0aNHG0wWGCzL0pgxYzR//nx9++23SkpKMh0poFx88cXasGHDcctuueUWtW3bVhMmTKDUeUDv3r21bdu245Zt3769RjuPR093EhMTozvuuEOPPfaYEhMT1bRpU02dOlWSNHToUE9GCUhNmjQ57npUVJQkqUWLFvwV7SH79+9X37591bRpUz3//PM6fPhw5dfYglQzxo8fr5tuukmStG3bNr355psqLCzULbfcYjiZ/xs1apTef/99LViwQNHR0ZX7NcbGxio8PNxwOv8XHR39u/0ZIyMjVadOHfZz9JC7775bvXr10uTJkzVs2DCtXLlS//jHP2p0pMbj57GbOnWqgoKC9Kc//UnFxcXq2bOnvv7665o9pwvgJb744gulp6crPT39d2XaYhKYGnHddddp7969uv/++9W7d2+lpqZq8eLFqlevnulofu+1116TpOOOSpakt99++7S7LgD+oHv37po/f74mTpyoJ598UklJSZo2bZpuuOGGGrtPphQD4PeYUgxAoGDnHgAAAD9BsQMAAPATFDsAAAA/QbEDAADwExQ7AAAAP0GxAwAA8BMUOwAAAD9BsQMAAPATFDsAAAA/wcwTAPyeZVnKz89XdHS0bDab6TgAUGPYYgfAb82cOVPh4eHKzMxUTEyMbDabbrnlFiUnJys3N9d0PACodmyxA+C3LMtS586ddcEFF2j69Ol67LHH9NZbb2nFihVq1KiR6XgAUO2CTAcAgJpis9n09NNP69prr1X9+vU1ffp0LV26lFIHwG+xxQ6A3+vSpYs2bdqkzz//XBdeeKHpOABQY9jHDoBfW7x4sbZu3SqXy6V69eqZjgMANYotdgD81po1a9S3b1+98cYbeueddxQTE6MPP/zQdCwAqDHsYwfAL+3Zs0eDBw/Wgw8+qBEjRqh58+Y677zztGbNGnXp0sV0PACoEWyxA+B3srOz1atXL/Xt21evv/565fLBgwfL5XJp8eLFBtMBQM2h2AEAAPgJDp4AAADwExQ7AAAAP0GxAwAA8BMUOwAAAD9BsQMAAPATFDsAAAA/QbEDAADwExQ7AAAAP0GxAwAA8BMUOwAAAD9BsQMAAPATFDsAAAA/8f8B6fM+9FAqjfgAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x \\left(- 7.929488134 \\cdot 10^{-6} x^{8} + 0.000110612384 x^{6} + 6.518995814 \\cdot 10^{-5} x^{4} - 0.07266616915 x^{2} - 1.595769883\\right)$"
      ],
      "text/plain": [
       "x*(-7.929488134e-6*x**8 + 0.000110612384*x**6 + 6.518995814e-5*x**4 - 0.07266616915*x**2 - 1.595769883)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sympy import symbols, exp, sqrt, simplify, expand\n",
    "from sympy.plotting import plot\n",
    "\n",
    "a1 = -0.3512339572e-8\n",
    "a2 = 0.2645266170e-6\n",
    "a3 = -0.7929488134e-5\n",
    "a4 = 0.1106123840e-3\n",
    "a5 = 0.6518995814e-4\n",
    "a6 = -0.7266616915e-1\n",
    "a7 = -0.1595769883e1\n",
    "x = symbols(\"x\")\n",
    "t = x**2\n",
    "z= ((((((a1 * t + a2) * t + a3) * t + a4) * t + a5) * t + a6) * t + a7) * x\n",
    "y = x / (1 + exp(z))\n",
    "gelu_y = x * 0.5 * (1 + erf(x / sqrt(2)))\n",
    "# plot(y, gelu_y)\n",
    "# simplify(y)\n",
    "y\n",
    "# plot(y)\n",
    "# plot(z)\n",
    "e_z = expand(z)\n",
    "print(e_z)\n",
    "# z2 = -3.512339572e-9*x**13 + 2.64526617e-7*x**11 - 7.929488134e-6*x**9 + 0.000110612384*x**7 + 6.518995814e-5*x**5 - 0.07266616915*x**3 - 1.595769883*x\n",
    "z2 = - 7.929488134e-6*x**9 + 0.000110612384*x**7 + 6.518995814e-5*x**5 - 0.07266616915*x**3 - 1.595769883*x\n",
    "# z2 =   +6.518995814e-5*x**5 - 0.07266616915*x**3 - 1.595769883*x\n",
    "\n",
    "y2 = x / (1 + exp(z2))\n",
    "plot(y2, (x, -5.75, 5.75))\n",
    "simplify(z2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.00017381649722425507"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "x = np.linspace(-5.75, 5.75, 10000)\n",
    "z = - 7.929488134e-6*x**9 + 0.000110612384*x**7 + 6.518995814e-5*x**5 - 0.07266616915*x**3 - 1.595769883*x\n",
    "y = x / (1 + np.exp(z))\n",
    "y2 = torch.nn.functional.gelu(torch.tensor(x)).numpy()\n",
    "np.max(np.abs(y - y2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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LVu25N5776V///6sXr26wjksKpKYmMgHH3zARx99RHJyMjNnznSdshocHFytjH5+fsybN4+0tDQ6duzIww8/7Do4tCquvvpq0tLSaNOmDePHj6d9+/b06tWL999/n5deeon77y97JPK4ceOIiYkps7z88stltrnmmmtITU11LV26dAFg/vz5XHvttdx333106NCBhx56iJtvvpk333yzWt+BiIjP2vkVzB8NH91rdRIcRlWOOnSDnJwcIiIiyM7OJjw8vMxzZ8+eZffu3SQmJmqug5949tlnef3118nMzLQ6iq3p35CI1EqLfgdrZ8LVv4EbptbIR1zq9/eFtCvEpl577TW6detGVFQU33zzDS+88AIPPPCA1bFERMSODp071bRJ8qW38wAVC5vavn07zzzzDCdOnCA+Pp7f/va3TJ482epYIiJiN04nHM4w78ekXHpbD1CxsKmXXnqJl156yeoYIiJidyd3Q2EuBNSBhtafMaeDN0VERLzZwe/M28Ydwd/68QIVCxEREW9WWixiO1sao5T11UZERESqr8d9EJsKDRKtTgKoWIiIiHi3+vHmYhNV3hVy4MAB7rzzTqKioggJCaFTp04XTT8tIiIitVOVRixOnjxJ79696d+/P4sWLaJRo0Zs376dBg0a1FQ+ERERqcje1bB/PSReY5tjLKo0YvGnP/2JuLg45syZQ/fu3UlMTGTQoEG0bNmypvJ5vX79+jFx4kSPfd7cuXOpX7++xz5PREQstOUzWPZ/kP6e1UlcqlQsPv30U7p27cqIESOIjo4mNTWV2bNnX/I1BQUF5OTklFl8zV133YXD4bho2bFjBx999BF//OMfXds2b96cGTNmlHm9FWXgq6++4qabbqJRo0bUqVOHli1bMnLkSFatWuXaZsWKFeX+XA6Hw3VhsaeeeorOnTuX+xl33XUXw4YNu2h96fuWXgJdRESqyWZnhEAVi8WuXbuYOXMmSUlJLFmyhPvvv5+HHnqIt99+u8LXTJ06lYiICNcSFxd3xaHt6IYbbuDQoUNllsTERCIjI8tcudMOXnvtNQYMGEBUVBTz589n69atLFy4kF69evHwww9ftP3WrVsv+tmio6MtSC4iIi7OkvNTecemWpvlAlUqFk6nk6uuuornnnuO1NRU7r33Xn71q1/x+uuvV/iayZMnk52d7VqqdRGtwvyKl6Kz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QHR7q9Ncks4KERERsbvis9CiPwQEm7Nv2pi904mIiAjEJMOYj61OUSnaFSIiIiJuo2IhIiJiZyVFkH/M6hSVpmIhIiJiZwe/gxdawuwBViepFBULERERO8tca96GRlubo5JULEREROwsc515G9fd2hyVpGIhIiJiV4ZxQbHoYW2WSlKxEBERsavsTMg7DH4BEJtqdZpKUbEQERGxq9LRiibJEBhibZZKUrEQERGxKy87vgI086aIiIh9tRoIJYWQNMjqJJWmYiEiImJXrQeZixfRrhARERFxG41YiIiI2NH+NDCc5gXIAoKtTlNpGrEQERGxo1V/hrcGwvo3rU5SJSoWIiIidnPhxFjNvOeMEFCxEBERsZ/jO+HMCfAPNneFeBEVCxEREbvZf260IjbVq46vABULERER+ym9omlcN2tzVIOKhYiIiN142YXHLqRiISIiYidnsyFri3nfyw7cBM1jISIiYi+BdWHcIjiyCcIaW52myqo0YvHUU0/hcDjKLG3btq2pbCIiIrWPfyAk9ITuv7I6SbVUecSiQ4cOfPnll+ffIECDHiIiImKqcisICAigSZMmNZFFRESkdisuhKVPmAdtth8G/t73x3uVD97cvn07sbGxtGjRgtGjR7Nv375Lbl9QUEBOTk6ZRURERMpx8DtYNwsWPQ5+/lanqZYqFYsePXowd+5cFi9ezMyZM9m9ezd9+/YlNze3wtdMnTqViIgI1xIXF3fFoUVERHzSvm/N2/irweGwNks1OQzDMKr74lOnTpGQkMCLL77IPffcU+42BQUFFBQUuB7n5OQQFxdHdnY24eHh1f1oERER3/Pu7bB9CQx+DnqOtzpNGTk5OURERFz29/cV7bypX78+rVu3ZseOHRVuExwcTHCwd01HKiIi4nFOJ2SuMe/H97Q2yxW4ogmy8vLy2LlzJzExMe7KIyIiUjsd3WJOjhUUCk2868JjF6pSsXjkkUdYuXIle/bs4dtvv2X48OH4+/szatSomsonIiJSO+w9d3xFs25eeTZIqSol379/P6NGjeL48eM0atSIPn36sGbNGho1alRT+URERGqHY9vMWy/eDQJXePBmdVT24A8REZFaJ+cg+AVAaLTVSS7ikYM3RURExI3CY61OcMV0dVMRERFxGxULERERqy15At4dAbtXWZ3kiqlYiIiIWG37UnMpzLc6yRVT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/v7+HDlypMz6I0eO0KRJE4tSia944IEH+Pzzz/nqq69o1qyZ1XFsKygoiFatWtGlSxemTp1KSkoKf/nLX6yOZTtpaWlkZWVx1VVXERAQQEBAACtXruSvf/0rAQEBlJSUWB3R1urXr0/r1q3ZsWOH1VFsJyYm5qIi365dO0t2HXl9sQgKCqJLly4sX77ctc7pdLJ8+XLt45VqMwyDBx54gIULF/Lvf/+bxMREqyN5FafTSUFBgdUxbGfAgAFkZGSQnp7uWrp27cro0aNJT0/H39/f6oi2lpeXx86dO4mJibE6iu307t37olPit23bRkJCgsez+MSukEmTJjF27Fi6du1K9+7dmTFjBvn5+YwbN87qaLaSl5dXpunv3r2b9PR0IiMjiY+PtzCZ/YwfP5733nuPTz75hLCwMNfxOhEREYSEhFiczl4mT57MkCFDiI+PJzc3l/fee48VK1awZMkSq6PZTlhY2EXH6dSrV4+oqCgdv1OORx55hKFDh5KQkMDBgweZMmUK/v7+jBo1yupotvPwww/Tq1cvnnvuOW6//XbWrVvHrFmzmDVrlufDWH1airu8/PLLRnx8vBEUFGR0797dWLNmjdWRbOerr74ygIuWsWPHWh3Ndsr7ngBjzpw5VkeznbvvvttISEgwgoKCjEaNGhkDBgwwli5danUsr6HTTSs2cuRIIyYmxggKCjKaNm1qjBw50tixY4fVsWzrs88+Mzp27GgEBwcbbdu2NWbNmmVJDl02XURERNzG64+xEBEREftQsRARERG3UbEQERERt1GxEBEREbdRsRARERG3UbEQERERt1GxEBEREbdRsRARERG3UbEQERERt1GxEBEREbdRsRARERG3UbEQERERt/l/rTU0JKVERXsAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import numpy.polynomial.chebyshev as cheb\n",
    "\n",
    "# 定义 GELU 函数的近似实现\n",
    "def gelu(x):\n",
    "    return torch.nn.functional.gelu(torch.tensor(x)).numpy()\n",
    "\n",
    "# 生成数据点\n",
    "x = np.linspace(0, 6, 10000)\n",
    "y = gelu(x)\n",
    "\n",
    "# 使用 Chebyshev 多项式拟合数据\n",
    "coef = cheb.chebfit(x, y, deg=7)  # 选择一个合适的多项式度数\n",
    "\n",
    "# 使用拟合得到的系数创建一个 Chebyshev 多项式实例\n",
    "gelu_cheb = cheb.Chebyshev(coef[::-1])\n",
    "\n",
    "# 评估拟合多项式\n",
    "y_fit = gelu_cheb(x)\n",
    "\n",
    "# 比较拟合效果\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(x, y, label='Original GELU')\n",
    "plt.plot(x, y_fit, label='Fitted GELU', linestyle='--')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.09842189914535926\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/latex": [
       "$x \\mapsto \\text{2.50443927e-12}\\,{T}_{0}(x) + \\text{3.43801236}\\,{T}_{1}(x) - \\text{(3.09946409e-11)}\\,{T}_{2}(x)$"
      ],
      "text/plain": [
       "Chebyshev([ 2.50443927e-12,  3.43801236e+00, -3.09946409e-11], domain=[-1,  1], window=[-1,  1], symbol='x')"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import numpy.polynomial.chebyshev as cheb\n",
    "\n",
    "\n",
    "# 定义 GELU 函数的近似实现\n",
    "def gelu(x):\n",
    "    return torch.nn.functional.gelu(torch.tensor(x)).numpy()\n",
    "\n",
    "\n",
    "# 生成数据点\n",
    "x = np.linspace(-5.75, 5.75, 100000)\n",
    "yy = gelu(x)\n",
    "\n",
    "# coefficients = np.polyfit(x, yy, deg=24)\n",
    "# p = np.poly1d(coefficients)\n",
    "# y_fit = p(x)\n",
    "\n",
    "# y = yy / x * 2 - 1\n",
    "# coefficients = np.polyfit(x, y, deg=25)\n",
    "# p = np.poly1d(coefficients)\n",
    "# y_fit = (p(x) + 1) * 0.5 * x\n",
    "\n",
    "y = np.log(x / yy - 1) / -np.sqrt(2 / np.pi)\n",
    "# coefficients = np.polyfit(x, y, deg=2)\n",
    "# p = np.poly1d(coefficients)\n",
    "# 使用 Chebyshev 多项式拟合数据\n",
    "coef = cheb.chebfit(x, y, deg=2)  # 选择一个合适的多项式度数\n",
    "# 使用拟合得到的系数创建一个 Chebyshev 多项式实例\n",
    "p = cheb.Chebyshev(coef[::-1])\n",
    "# 评估拟合多项式\n",
    "y_fit = x / (1 + np.exp(-np.sqrt(2 / np.pi) * p(x)))\n",
    "\n",
    "\n",
    "\n",
    "# # 使用 Chebyshev 多项式拟合数据\n",
    "# coef = cheb.chebfit(x, y, deg=3)  # 选择一个合适的多项式度数\n",
    "# # 使用拟合得到的系数创建一个 Chebyshev 多项式实例\n",
    "# gelu_cheb = cheb.Chebyshev(coef[::-1])\n",
    "# # 评估拟合多项式\n",
    "# y_fit = gelu_cheb(x)\n",
    "# y_fit = x / (np.exp(y_fit) + 1)\n",
    "\n",
    "print(np.max(np.abs(yy - y_fit)))\n",
    "\n",
    "# 比较拟合效果\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(x, yy, label=\"Original GELU\")\n",
    "plt.plot(x, y_fit, label=\"Fitted GELU\", linestyle=\"--\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n",
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [],
   "source": [
    "  a1 = 0.254829592\n",
    "  a2 = -0.284496736\n",
    "  a3 = 1.421413741\n",
    "  a4 = -1.453152027\n",
    "  a5 = 1.061405429\n",
    "  p = 0.3275911"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0038279396446354585\n"
     ]
    },
    {
     "data": {
      "image/png": "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pO7cwvG9W7iCBPYfz+VARi65WUEcNCOpxQkchocAXAS4j4H7GAD/WbWfPE6d+tnWcZiajv+dIp5vOjhkRnLEHs3x6o24s31dGtZP4C8NI4mqfu5Tq0VEzkcjFiJ+yO0xOZKdT1pGHtlZJziZmU5+1jFcORngcZEa1h73b1dtjS3cT7hxEmdwCKGRdahZux4xNYIJcvrOwaIi4vs0YiFSidltBrXDgqgdFgTUABqcY+4mFZJJRATKcNt0ERERkbNRsRARERGvUbEQERERr1GxEBEREa9RsRARERGvUbEQERERr1GxEBEREa9RsRARERGvUbEQERERr1GxEBEREa9RsRARERGvUbEQERERr1GxEBEREa+p8Lub/n6X9szMzIpetYiIiJTR75/bv3+On02FF4usrCwA4uLiKnrVIiIicoGysrIIDw8/6+uGeb7q4WUej4cDBw4QGhqKYRjnnT8zM5O4uDj27t1LWFhYBSSsPLTtykbbrey07cpG261stN3KrizbzjRNsrKyiI2NxWY7+5EUFT5iYbPZqFevXqmXCwsL0w9OGWnblY22W9lp25WNtlvZaLuVXWm33blGKn6ngzdFRETEa1QsRERExGt8vlgEBgYyYcIEAgMDrY7id7Ttykbbrey07cpG261stN3Krjy3XYUfvCkiIiKVl8+PWIiIiIj/ULEQERERr1GxEBEREa9RsRARERGv8cti8fXXX9O5c2eCg4OJiIhgwIABVkfyG/n5+bRt2xbDMFi3bp3VcXza7t27ue2220hISCA4OJhGjRoxYcIECgoKrI7mk1577TUaNGhAUFAQnTt3ZsWKFVZH8nmTJk2iY8eOhIaGEh0dzYABA0hJSbE6lt959tlnMQyDMWPGWB3F5+3fv5+bbrqJqKgogoODad26NatWrfLqOvyuWHz66afcfPPNDB8+nPXr17NkyRJuvPFGq2P5jYceeojY2FirY/iFrVu34vF4mD59Ops2beKll15i2rRp/O1vf7M6ms+ZPXs248aNY8KECaxZs4akpCT69etHWlqa1dF82qJFixg5ciTLli1j/vz5uFwuLr30UnJycqyO5jdWrlzJ9OnTadOmjdVRfN7x48fp1q0bTqeTuXPnsnnzZl544QUiIiK8uyLTj7hcLrNu3brmW2+9ZXUUv/Tf//7XbNasmblp0yYTMNeuXWt1JL/z3HPPmQkJCVbH8DmdOnUyR44cWfTc7XabsbGx5qRJkyxM5X/S0tJMwFy0aJHVUfxCVlaWmZiYaM6fP9/s2bOnOXr0aKsj+bSHH37Y7N69e7mvx69GLNasWcP+/fux2WwkJycTExND//792bhxo9XRfN7hw4cZMWIE7733HtWqVbM6jt/KyMggMjLS6hg+paCggNWrV9O3b9+iaTabjb59+7J06VILk/mfjIwMAP2MldDIkSO54ooriv3sydl99dVXdOjQgUGDBhEdHU1ycjJvvvmm19fjV8Xi119/BWDixIk89thjzJkzh4iICHr16sWxY8csTue7TNPklltu4a677qJDhw5Wx/FbO3bs4JVXXuHOO++0OopPOXLkCG63m9q1axebXrt2bQ4dOmRRKv/j8XgYM2YM3bp1o1WrVlbH8XmzZs1izZo1TJo0yeoofuPXX39l6tSpJCYm8s0333D33Xdz33338c4773h1PT5RLB555BEMwzjn4/f93QCPPvoo11xzDe3bt2fGjBkYhsHHH39s8XdR8Uq63V555RWysrIYP3681ZF9Qkm32x/t37+fyy67jEGDBjFixAiLkktlNnLkSDZu3MisWbOsjuLz9u7dy+jRo/nggw8ICgqyOo7f8Hg8tGvXjmeeeYbk5GTuuOMORowYwbRp07y6ngq/bfqZ3H///dxyyy3nnKdhw4YcPHgQgBYtWhRNDwwMpGHDhqSmppZnRJ9U0u32/fffs3Tp0tOuCd+hQweGDBni9bbq60q63X534MABevfuTdeuXXnjjTfKOZ3/qVmzJna7ncOHDxebfvjwYerUqWNRKv8yatQo5syZw+LFi6lXr57VcXze6tWrSUtLo127dkXT3G43ixcv5tVXXyU/Px+73W5hQt8UExNT7PMToHnz5nz66adeXY9PFItatWpRq1at887Xvn17AgMDSUlJoXv37gC4XC52795N/fr1yzumzynpdnv55Zd5+umni54fOHCAfv36MXv2bDp37lyeEX1SSbcbnBqp6N27d9HomM3mE4N8PiUgIID27duzYMGColO/PR4PCxYsYNSoUdaG83GmaXLvvffy+eefs3DhQhISEqyO5Bf69OnDhg0bik0bPnw4zZo14+GHH1apOItu3bqddjrztm3bvP756RPFoqTCwsK46667mDBhAnFxcdSvX5/JkycDMGjQIIvT+a74+Phiz6tXrw5Ao0aN9NvROezfv59evXpRv359nn/+edLT04te02/ixY0bN45hw4bRoUMHOnXqxJQpU8jJyWH48OFWR/NpI0eO5MMPP+TLL78kNDS06JiU8PBwgoODLU7nu0JDQ087DiUkJISoqCgdn3IOY8eOpWvXrjzzzDNcd911rFixgjfeeMPrI7F+VSwAJk+ejMPh4OabbyY3N5fOnTvz/fffe/88XKny5s+fz44dO9ixY8dpBczUTYGLGTx4MOnp6Tz++OMcOnSItm3bMm/evNMO6JTipk6dCkCvXr2KTZ8xY8Z5d9eJlFbHjh35/PPPGT9+PE8++SQJCQlMmTKFIUOGeHU9um26iIiIeI12GIuIiIjXqFiIiIiI16hYiIiIiNeoWIiIiIjXqFiIiIiI16hYiIiIiNeoWIiIiIjXqFiIiIiI16hYiIiIiNeoWIiIiIjXqFiIiIiI16hYiIiIiNf8fwC1QpWCFFKGAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "poly1d([ 3.03480014e-02,  4.33948616e-04,  9.66164909e-01, -3.33869001e-04])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import numpy.polynomial.chebyshev as cheb\n",
    "\n",
    "\n",
    "# 定义 GELU 函数的近似实现\n",
    "def gelu(x):\n",
    "    return torch.nn.functional.gelu(torch.tensor(x)).numpy()\n",
    "\n",
    "\n",
    "# 生成数据点\n",
    "# x = np.linspace(-5.75, 5.75, 100000)\n",
    "x = np.array([-5.75, *np.arange(-2, 2, 0.01), 3, 5.75])\n",
    "yy = gelu(x)\n",
    "\n",
    "# coefficients = np.polyfit(x, yy, deg=24)\n",
    "# p = np.poly1d(coefficients)\n",
    "# y_fit = p(x)\n",
    "\n",
    "# y = yy / x * 2 - 1\n",
    "# coefficients = np.polyfit(x, y, deg=25)\n",
    "# p = np.poly1d(coefficients)\n",
    "# y_fit = (p(x) + 1) * 0.5 * x\n",
    "\n",
    "# 假设 gelu = x / (1 + exp(-(1.702 * x + p(x))))\n",
    "y = np.log(x / yy - 1) / -1.702\n",
    "coefficients = np.polyfit(x, y, deg=3)\n",
    "p = np.poly1d(coefficients)\n",
    "# 使用 Chebyshev 多项式拟合数据\n",
    "# coef = cheb.chebfit(x, y, deg=2)  # 选择一个合适的多项式度数\n",
    "# 使用拟合得到的系数创建一个 Chebyshev 多项式实例\n",
    "# p = cheb.Chebyshev(coef[::-1])\n",
    "# 评估拟合多项式\n",
    "y_fit = x / (1 + np.exp(p(x) * -1.702))\n",
    "\n",
    "\n",
    "\n",
    "# # 使用 Chebyshev 多项式拟合数据\n",
    "# coef = cheb.chebfit(x, y, deg=3)  # 选择一个合适的多项式度数\n",
    "# # 使用拟合得到的系数创建一个 Chebyshev 多项式实例\n",
    "# gelu_cheb = cheb.Chebyshev(coef[::-1])\n",
    "# # 评估拟合多项式\n",
    "# y_fit = gelu_cheb(x)\n",
    "# y_fit = x / (np.exp(y_fit) + 1)\n",
    "\n",
    "print(np.max(np.abs(yy - y_fit)))\n",
    "\n",
    "# 比较拟合效果\n",
    "import matplotlib.pyplot as plt\n",
    "xx = np.array([-5.75, *np.arange(-2, 2, 0.01), 3, 5.75])\n",
    "plt.plot(xx, gelu(xx), label=\"Original GELU\")\n",
    "plt.plot(x, y_fit, label=\"Fitted GELU\", linestyle=\"--\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "p\n",
    "# dir(p)\n",
    "# p.c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "傅里叶变换结果: [ 4.5       +0.j          2.08155948-1.65109876j -1.83155948+1.60822041j\n",
      " -1.83155948-1.60822041j  2.08155948+1.65109876j]\n",
      "逆傅里叶变换结果: [ 1. +0.j  2. +0.j  1. +0.j -1. +0.j  1.5+0.j]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# 创建一个样本数组\n",
    "x = np.array([1.0, 2.0, 1.0, -1.0, 1.5])\n",
    "\n",
    "# 计算傅里叶变换\n",
    "y = np.fft.fft(x)\n",
    "print(\"傅里叶变换结果:\", y)\n",
    "\n",
    "# 计算逆傅里叶变换\n",
    "yinv = np.fft.ifft(y)\n",
    "print(\"逆傅里叶变换结果:\", yinv)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGdCAYAAAAfTAk2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABjx0lEQVR4nO3dd3wUdeLG8c/uplKSAAkpEHpvCSQQI6gokQCKoKigKMghKIKKYONUsGOvcGABgRMV9USRjiCgGDqh994SegIJqTu/P7jLXX7UQDbfTfK8X695aWa/O/vMouyT2Znv2CzLshAREREpQeymA4iIiIgUNhUcERERKXFUcERERKTEUcERERGREkcFR0REREocFRwREREpcVRwREREpMRRwREREZESx8N0ABOcTieHDh2ifPny2Gw203FERETkCliWxenTpwkLC8Nuv/QxmlJZcA4dOkR4eLjpGCIiInIV9u/fT9WqVS85plQWnPLlywPn3iA/Pz/DaURERORKpKamEh4envc5fimlsuD852spPz8/FRwREZFi5kpOL9FJxiIiIlLiqOCIiIhIiaOCIyIiIiVOqTwHR0RE5Frk5uaSnZ1tOkaJ43A48PDwKJQpXFRwRERECuDMmTMcOHAAy7JMRymRypQpQ2hoKF5eXte0HRUcERGRK5Sbm8uBAwcoU6YMQUFBmiy2EFmWRVZWFkePHmX37t3UrVv3spP5XYoKjoiIyBXKzs7GsiyCgoLw9fU1HafE8fX1xdPTk71795KVlYWPj89Vb0snGYuIiBSQjty4zrUctcm3nULZioiIiIgbcWnBWbx4MZ07dyYsLAybzcbPP/982ecsXLiQFi1a4O3tTZ06dZgwYcJ5Y0aPHk2NGjXw8fEhJiaG5cuXF354ERGRUu7ll18mMjKyQM9p27YtgwcPdkmegnBpwUlLSyMiIoLRo0df0fjdu3dz2223cfPNN5OYmMjgwYN5+OGHmTNnTt6YKVOmMGTIEEaMGMHq1auJiIggPj6eI0eOuGo3RERESqWnn36a+fPnF+g5P/30E6+99pqLEl05m1VE17nZbDamTp1K165dLzrmueeeY8aMGWzYsCFvXY8ePTh16hSzZ88GICYmhpYtWzJq1CgAnE4n4eHhPP744zz//PNXlCU1NRV/f39SUlJ0LyoREbliGRkZ7N69m5o1a17TCbDuzrIscnNz8fAo+muRLvUeF+Tz263OwUlISCAuLi7fuvj4eBISEgDIyspi1apV+cbY7Xbi4uLyxlxIZmYmqamp+RYRZ24u+7evZfWsr5j622I+W7STj3/bzrh/TWfpmEdJmPQSK3/9jE0Jszi0ewvZWZmmI4uIXLXMzEyeeOIJKleujI+PD23atGHFihXAudNDbDYbs2bNIioqCm9vb/7888/zvqLKycnhiSeeICAggEqVKvHcc8/Ru3fvfAcv/v9XVDVq1ODNN9/kb3/7G+XLl6datWp8/vnnLt9ft7pMPCkpieDg4HzrgoODSU1N5ezZs5w8eZLc3NwLjtmyZctFtzty5EheeeUVl2SW4iPjbBqb/5hK1tZ5+KdspVr2LsJtmYQDk7Me5V/OGwG42Z5IX69vz3t+uuXNZt8m7Kv/N6q37EyjMD8cdl1JIVKaWZbF2excI6/t6+ko0NVczz77LP/617+YOHEi1atX55133iE+Pp4dO3bkjXn++ed57733qFWrFhUqVGDhwoX5tvH2228zefJkvvrqKxo2bMjHH3/Mzz//zM0333zJ137//fd57bXX+Pvf/86PP/7IgAEDuOmmm6hfv36B9rkg3KrguMqwYcMYMmRI3s+pqamEh4cbTCRFJSM7l0XbjrJ96Qwe2vcCzW1n//ugDTIsT/Z51qRGWE3u8q+Cj5eDsBwPlh7viUf6EXwzkvHPPkKQ8zhlbJk0y1jF2BWtmbmsAv6+ntzT0Jse9R3UiWhjbidFxJiz2bk0Gj7n8gNdYNOr8ZTxurKP8bS0NMaMGcOECRPo2LEjAF988QXz5s1j3LhxtGzZEoBXX32VW2+99aLb+fTTTxk2bBh33nknAKNGjWLmzJmXff1OnTrx2GOPAedOR/nwww/5/fffS0/BCQkJITk5Od+65ORk/Pz88PX1xeFw4HA4LjgmJCTkotv19vbG29vbJZnFPZ06lsTUJev4KBFSzmZTgTI86p1JMpXYHXQLHtVbEVQnmiq1m1DP04t6+Z7dFIjPt8aZm8vuratJTpyDZ0Ys5ffmkHI2G9+1U6iz6Ue2/VqPU40fpGn7PviWLV90OyoicgV27txJdnY2rVu3zlvn6elJq1at2Lx5c17BiY6Ovug2UlJSSE5OplWrVnnrHA4HUVFROJ3OS75+s2bN8v7dZrMREhLi8ouD3KrgxMbGntcE582bR2xsLABeXl5ERUUxf/78vO/7nE4n8+fPZ9CgQUUdV9zQsUN72fHLSJol/URTqzopWSMI8/elY9OabA2fQ8MmUQQ7HAXert3hoGajltRs1JLrgJxcJyv2nOTs9J/JOuGgXs42WPsSp9a+zdq6j9C829N4+5Qp/B0UEbfi6+lg06vxlx/ootcubGXLli30bcK5MvW/bDbbZUvRtXJpwTlz5ky+7/Z2795NYmIiFStWpFq1agwbNoyDBw8yadIkAB599FFGjRrFs88+y9/+9jcWLFjA999/z4wZM/K2MWTIEHr37k10dDStWrXio48+Ii0tjT59+rhyV8TNpZ0+xfrJf6f54e+5zpYNNqjgkcMXXWpzS/MGhX6ujIfDTmztSvDkFxxPHsH2OZ8RvnsKVaxkrtv+Pofe/prDLZ+nRcc+mvFUpASz2WxX/DWRSbVr18bLy4slS5ZQvXp14NxtJ1asWHHFc9b4+/sTHBzMihUruPHGc+cs5ubmsnr16gLPlVMUXPqnsnLlynwnHv3nPJjevXszYcIEDh8+zL59+/Ier1mzJjNmzOCpp57i448/pmrVqnz55ZfEx/+3HXfv3p2jR48yfPhwkpKSiIyMZPbs2eedeCylR+Jv3xLy50tcx1GwwWbPRmRdP4RmN3WjdiFN+X0plYKrUqnXa+Rkv8TyaaOptf4jwqxkEhL+xWu76/PyHY2JDA9weQ4RkYspW7YsAwYM4Jlnnsk7yPDOO++Qnp5O3759Wbt27RVt5/HHH2fkyJHUqVOHBg0a8Omnn3Ly5Em3/EXOpQWnbdu2l7yd/IVmKW7bti1r1qy55HYHDRqkr6SEwyln+de34xmU9PdzP9uCOHLD6zRrey+2Iig2/5+Hpxetuj1FenwfEr5/k3/sacbO/afoNuYvBt8QyqPtGuHppXPBRMSMt956C6fTyYMPPsjp06eJjo5mzpw5VKhQ4Yq38dxzz5GUlESvXr1wOBz079+f+Ph4HFfx1b+rFdlEf+5EE/0Vf7+uPcSwn9aTnpnFj16vkFXlOiJ6volvOff58zxyOoM3Zmzml8SDjPL8hPreJ/C+90uq1Ys0HU1ErlJpmejvSjmdTho2bMi9995baLMXF9ZEf+7/xaHI/8jKzGDhpFcZurMVWXjSvFpFfLvMpUWViqajnadyeR8+7tGc26s7aTVnA/45aZydfCvLGg2l1T3PGjnKJCJyLfbu3cvcuXO56aabyMzMZNSoUezevZv777/fdLTz6G9YKTaS9m1n97s30v7gaF7y+CePta3ND4/E0tANy83/ujU2isx+S1jv3QJfWxYxm0ey6qN7yDibZjqaiEiB2O12JkyYQMuWLWndujXr16/nt99+o2HDhqajnUdHcKRYWL/oJ8J/f5wQzpBKWZrefA8PtmtgOtYVq1ylJoHP/sbSKSOJ3vo+0am/sfX9W6j08A8EhlQzHU9E5IqEh4ezZMkS0zGuiI7giNtb8fMoGi7oSwBn2O6ow5neC4hs18N0rAKzOxxcd/+LbLl1IimUpX7OFo5+1pVNB1NMRxMRKXFUcMRtWU4nSye9RMvEF/CwOVnpdyvhTy8mrGbxOXJzIU3a3EFKz9nstNfgpYye3P1ZAvM2JV/+iSIicsVUcMQtOZ0WH01dTKOdXwCwNKQnLZ6cgo+va2bZLGrV6jYjcOhyfGq3IT0rl0e/XsXMFRe/YayIiBSMCo64nawcJ4OnJPLxijT6Zw9lad2hXPfoP7C74TwL18K/rDdf9WnJXS2q0MDaRez0dqz4eZTpWCIiJYJOMha3kpOdxWtfz2HaVjsedhs97rmf65pXMR3LZTwddt67O4I/j4yhwrEzRK15keU5WbS6e4jpaCIixZqO4IjbyM3JIfHT+xiy51GaO/bwRe9oupbgcvMfdruNNgP+wbLAu7DbLFpteIVlU94yHUtEpFhTwRG34MzNZdXo3kSn/kY5zjLi5orcXL+y6VhFxu5w0OqxcSwNvg+AmM0jWfb9u4ZTiUhpYbPZ+PnnnwHYs2cPNpuNxMREo5mulQqOGGc5nawY259WJ6eTa9lYH/MekXH3mY5V5Gx2OzGP/IOEsF4AtNz4BqtnTzAbSkRKhcOHD9OxY0fTMQqVCo4Yt/TLJ4k5+iNOy8aaFm/QotPfTEcyxma3c93DH7Os4h3YbRZn//qSpTuPmY4lIiVcSEgI3t4l62bAKjhi1LLv3yH20CQAVjR5ieguAw0nMs9mtxP92Ff8UPER/pY1lH6TVrHpUKrpWCJSjLVt25YnnniCZ599looVKxISEsLLL7+c9/j/fkX1H7t27eLmm2+mTJkyREREkJCQkO/xP//8kxtuuAFfX1/Cw8N54oknSEtzn1vQqOCIMYu2JGHb8C8AEmoMIOaeoYYTuQ+HhwedB4wkokYIpzNz6P3Vcg4kHTEdS0QuJivt4kt2RgHGnr2ysVdh4sSJlC1blmXLlvHOO+/w6quvMm/evIuOf+GFF3j66adJTEykXr163HfffeTk5ACwc+dOOnToQLdu3Vi3bh1Tpkzhzz//ZNCgQVeVzRVslmVZpkMUtYLcbl1cY0tSKnePSSA7M53Xa27g7n4v6O7aF5ByNpt7x/xFlxNfcrvnKvyfWIx/hUDTsURKrYyMDHbv3k3NmjXx8fH57wMv+1/8SXXbQ88f/vvzG6GQnX7hsdXbQJ8Z//35nVqQfvz8cS8X7BYvbdu2JTc3lz/++CNvXatWrbjlllt46623sNlsTJ06la5du7Jnzx5q1qzJl19+Sd++fQHYtGkTjRs3ZvPmzTRo0ICHH34Yh8PBZ599lre9P//8k5tuuom0tLT8700BXfQ9pmCf3/pEkSJ35GQKfSes5ExmDs1rhdClr8rNxfj7ejLp/rrc5fEX1ayD7PmsB7n//g1KRKQgmjVrlu/n0NBQjhy5+JHh/x0fGhoKkDd+7dq1TJgwgXLlyuUt8fHxOJ1Odu/e7YL0BaeJ/qRInU07zanRcdyf0YCfKvVh7ANReHmo3FxKcEgYO+6cSMZPXYnIWEHC+KeI7f+p6Vgi8r/+fujij9n+3yzsz+y4xNj/9/fh4PVXn+n/8fT0zP9SNhtOp/OKxttsNoC88WfOnOGRRx7hiSeeOO951apVK4y410wFR4qM5XSy8bOHiM7ZRpDHYe64ZwQBZbxMxyoW6kS0YeX+N4le+QyxhyaxakYzom7rZzqWiPyHVwHuk+eqsUWoRYsWbNq0iTp16piOclH61VmKzPIf3iU69TdyLDuH478gvIb7/o/hjqJv78/S0J4ANFr+d3asXWI4kYiUVs899xx//fUXgwYNIjExke3bt/PLL7+41UnGKjhSJLatXkjzTW8DsKrukzSKLVkTShWVln0/YZ1PS3xtWZSb2pvjJ0+ajiQipVCzZs1YtGgR27Zt44YbbqB58+YMHz6csLAw09Hy6CoqXUXlciePHiZzdBtCOMaasjcQOXSaTiq+BiknjnJ0VByfZNzOydp3MLFPK+x2m+lYIqXCpa7wkcKhq6ikWMjNdbJ/3AOEcIz9tjDq9J+kcnON/CsG4ey3iLmONvyx/RifLd5lOpKIiNvRJ4241CcLdvBVaktOWOXJuXsC5f0rmo5UItQLDeDlzo0B+Grucjat+ctwIhER96KCIy6zdNdxPlmwnanOG/jjtgXUbBxjOlKJ0r1lOI/WT+dXz+ep8EsvUk4cNR1JRMRtqOCIS6ScPMaI7/7AsuDe6Kp0aVXPdKQSx2azMfCuduTYvQnlKDvH/Q3rEnNaiIiUJio44hI7vurPhMyn6BywmxH//ipFCl95/4qk3/ElWZaDFmmLWf7je6YjiYi4BRUcKXQrf/2MqNT5BHGKQXGNKOut+SRdqW7zG1ldbzAAkRvfYe/mVWYDiZQCpfAC5CJTWO+tCo4UqsN7t1J/5QgAVlTvR/3oWwwnKh1i7nuRdT4t8bZlk/mvR8nJzjIdSaREcjjO3XYhK0v/j7lKevq5G5H+/1tLFJR+tZZCk5uTw8nJfQm1nWWLR0NaPvi66Uilhs1uJ+TBL0j9ojX1crbx57dv0KbXK6ZjiZQ4Hh4elClThqNHj+Lp6Yld014UGsuySE9P58iRIwQEBOSVyaulgiOFZsU3r3Bd1nrSLB/K3/8VHp66z1RRqlylJitaDGfvihm8ubUJXx9KpVGYJrIUKUw2m43Q0FB2797N3r17TccpkQICAggJCbnm7RRJwRk9ejTvvvsuSUlJRERE8Omnn9KqVasLjm3bti2LFi06b32nTp2YMWMGAA899BATJ07M93h8fDyzZ88u/PByRfZtS6T5zjFgg42RL9CqVkPTkUql6M6P8MWpaE5sSmbI94lMG9RGd2sXKWReXl7UrVtXX1O5gKen5zUfufkPlxecKVOmMGTIEMaOHUtMTAwfffQR8fHxbN26lcqVK583/qeffsr3H83x48eJiIjgnnvuyTeuQ4cOfPXVV3k/e3t7u24n5JKcTouX5x2ii7MlNcpm07KL+9xsrbSx2Wy8cWdTVu49yZakVL775Vd6detiOpZIiWO323WrBjfn8l/tPvjgA/r160efPn1o1KgRY8eOpUyZMowfP/6C4ytWrEhISEjeMm/ePMqUKXNewfH29s43rkKFCq7eFbmISQl7WLDf4u+2Jwl8+AfdisGwoPLevNm5LuM93+X+dQ+xbfVC05FERIqcSz+JsrKyWLVqFXFxcf99QbuduLg4EhISrmgb48aNo0ePHpQtWzbf+oULF1K5cmXq16/PgAEDOH78+EW3kZmZSWpqar5FCseB5GO8M2crAM93akiVQBVNd9AhsgZ+AZXwsDnxnP4E2VmZpiOJiBQplxacY8eOkZubS3BwcL71wcHBJCUlXfb5y5cvZ8OGDTz88MP51nfo0IFJkyYxf/583n77bRYtWkTHjh3Jzc294HZGjhyJv79/3hIeHn71OyV5LKeTk+Pv5n3rPW6tBj1bVTMdSf5Hnd7/4CR+1HTuZeW3uqJKREoXt/4uYdy4cTRt2vS8E5J79OjBHXfcQdOmTenatSvTp09nxYoVLFy48ILbGTZsGCkpKXnL/v37iyB9ybfy509pmrmGm+2JDG9fDbvdZjqS/I+AwBB2NB8GQPNdn3Nw10bDiUREio5LC05gYCAOh4Pk5OR865OTky97CVhaWhrfffcdffv2vezr1KpVi8DAQHbs2HHBx729vfHz88u3yLU5lrSP+uveAiCxzmOE12lqOJFcSHTnR9ngHYmPLZsTUwbqXlUiUmq4tOB4eXkRFRXF/Pnz89Y5nU7mz59PbGzsJZ/7ww8/kJmZyQMPPHDZ1zlw4ADHjx8nNDT0mjPLldnzzVP4kc52j7pE93jRdBy5CJvdTsA9o8mwPGmauYZV0z8zHUlEpEi4/CuqIUOG8MUXXzBx4kQ2b97MgAEDSEtLo0+fPgD06tWLYcOGnfe8cePG0bVrVypVqpRv/ZkzZ3jmmWdYunQpe/bsYf78+XTp0oU6deoQHx/v6t0RYMOSX4lO/Q2nZYPbP9SEfm6uap0mJNbsz05nKGMTsziRprk7RKTkc/k8ON27d+fo0aMMHz6cpKQkIiMjmT17dt6Jx/v27TtvquutW7fy559/Mnfu3PO253A4WLduHRMnTuTUqVOEhYXRvn17XnvtNc2FUwSyMjMoP/95AFYE3UlM5A2GE8mVaHHfCO4cfTMbj2Tx5szNvHdPhOlIIiIuZbNK4S1RU1NT8ff3JyUlRefjFNA3M3/jxmWP4GvLxuPJ1fhXCDQdSa7Qqr0n6Dbm3PQMU/rFEFNbf3YiUrwU5PPbra+iEvdy4GQ6ryZkc2vmO6y76QuVm2ImqnpFHogOpZ9jOmW/6aw7jotIiaaCI1fslV83kZHtpFnNMNq2bW86jlyFoW3DGOT5C01yN7Hqpw9MxxERcRkVHLkiaxb8QNDWb/C0W7zetQk2m+a8KY4qBIawpeGTADTY/Aknjx42nEhExDVUcOSyMjPSCfrjRd70HMc/6q6kbnB505HkGkR3G8pORy38SWPbt8+ajiMi4hIqOHJZa74fSVUriaNU4Pq7B5uOI9fI4eFB5q3nJmlsefxXdqxZbDiRiEjhU8GRSzqWtJ8mO78AYE/kM5QtH2A2kBSKRtfFs9IvDrvNInfGMzgvch83EZHiSgVHLmn3lOcoZzvLNo96RHV+1HQcKUTVe7xPmuVDrezt/L5wnuk4IiKFSgVHLmrH2iVEnZgJgLP9m9gdDsOJpDAFhdVgSZNX6ZD1FsOWepCelWM6kohIoVHBkQuyLIvMGc9ht1msLN+OBq1uNR1JXOCmOx8mu0JdjpzO5PPFu0zHEREpNCo4ckGzNyTx99P3kGA1Jvyet03HERfx9nDwXIcGACxYtJCjh/YaTiQiUjhUcOQ8Gdm5vDFzM2utOiS0mUBwtbqmI4kLdWoawsuBC5hqf5bd3z9vOo6ISKFQwZHzfP3HVg6cPEuInw+P3lTLdBxxMZvNRmzbjjhsFtEnZ7Frw1LTkURErpkKjuSTcjyZOxZ34nmPb3g2rjplvFx+w3lxA/Wj41hVri12m0X6r89jOZ2mI4mIXBMVHMln8w+vUJmTxHttoEuLGqbjSBEK7fY2WZYHTTLXsG7Rv0zHERG5Jio4kufw3m00P/w9AKk3vIjDQ0dvSpOwmg1YHdodAP8/XtHdxkWkWFPBkTwHfnoRb1s2G7wiaXZTN9NxxICG3V/lFOWo4dzP6mmjTccREblqKjgCwM71S4k6NRcA706vY7PrP43SyL9CIFvqPcpJqxy/bT5CRrZu4SAixZM+xQSAtBkv/HtSv1uoG3mD6ThiUOSdQ+nuM5bPz7ThnwmaF0dEiicVHGFlYiJ1z64jy3IQeucbpuOIYT6+ZXj41kgARi/cQWpGttlAIiJXQQWnlLMsi1f+OEPbzA/4peYIqtRqZDqSuIG7mlehTlBZWmYksOz7d03HEREpMF0mU8rN2ZjE+oMplPUK4pa77zUdR9yEh8POyMgTtPzjA9J3enMs6UECQ8JNxxIRuWI6glOK5ebk8OusGQD0bVOTSuW8DScSdxJ9c1e2edSjjC2TnT+OMB1HRKRAVHBKsdUzv2R02lA+9RlL3xt0SwbJz2a3k9X2JQCaH/2Zg7s2G04kInLlVHBKqeysTELXfAhAYM2m+Pt6Gk4k7qhJmztY790CL1suh39+yXQcEZErpoJTSq2ZNpqqVhLH8Sei23Om44gb8+nwCgAtUn5j75bVhtOIiFwZFZxSKONsGtU3jAJge73+lCnnbziRuLO6zW9kTZnW2G0Wx2a8ajqOiMgVUcEphRJ//ohgjpNMJSLvfMp0HCkG/DoOZ6OzOp+daM6WpFTTcURELksFp5RJP5NC3a2fAbCn8UB8fMsaTiTFQe2m1zG63njm5kbz8W/bTccREbksFZxSZsbCP8m0HBywhdCiyyDTcaQYeTKuPjYbzNqQxMZDKabjiIhckgpOKZKWmcPINV60zfyQjW2/xNNL897IlasfUp67mlTgUcc0Tn7b33QcEZFL0kzGpcjXS/dyIi2LGpX8ademtek4Ugw9EV2Gqtum4DhtsT3xD92YVUTcVpEcwRk9ejQ1atTAx8eHmJgYli9fftGxEyZMwGaz5Vt8fHzyjbEsi+HDhxMaGoqvry9xcXFs367zAi4l/UwK+xdOwEEug26pi4dDB++k4KrXj2SNfxwA6XNeM5xGROTiXP4pN2XKFIYMGcKIESNYvXo1ERERxMfHc+TIkYs+x8/Pj8OHD+cte/fuzff4O++8wyeffMLYsWNZtmwZZcuWJT4+noyMDFfvTrG17ucPeN36hG/KfkjXyDDTcaQYC75jBDmWnYizy9i6coHpOCIiF+TygvPBBx/Qr18/+vTpQ6NGjRg7dixlypRh/PjxF32OzWYjJCQkbwkODs57zLIsPvroI1588UW6dOlCs2bNmDRpEocOHeLnn3929e4US+lnUqi349z7bWtyl47eyDUJr9OUNRXiAciYP9JwGhGRC3PpJ11WVharVq0iLi7uvy9otxMXF0dCQsJFn3fmzBmqV69OeHg4Xbp0YePGjXmP7d69m6SkpHzb9Pf3JyYm5qLbzMzMJDU1Nd9Smqz7+UMqkspBWzAtbn/EdBwpAUJuf4Fcy0bE2eVsT/zDdBwRkfO4tOAcO3aM3NzcfEdgAIKDg0lKSrrgc+rXr8/48eP55Zdf+Prrr3E6nVx//fUcOHAAIO95BdnmyJEj8ff3z1vCw8OvddeKjbNpp6n776M3h5oOxMPTy3AiKQnC6zRljX87AM7M1VEcEXE/bvddRWxsLL169SIyMpKbbrqJn376iaCgID777LOr3uawYcNISUnJW/bv31+Iid3b2p8/oBIpHLIFE3n7o6bjSAkS1OkFpuXG8tzJO9h8uHQdFRUR9+fSghMYGIjD4SA5OTnf+uTkZEJCQq5oG56enjRv3pwdO3YA5D2vINv09vbGz88v31IaZKSfoc72c0dvDjR5TPPeSKGq3qAFcxq8yTYrnFG/7zAdR0QkH5cWHC8vL6Kiopg/f37eOqfTyfz584mNjb2ibeTm5rJ+/XpCQ0MBqFmzJiEhIfm2mZqayrJly654m6XF9IR17HSGcJggmnceYDqOlECDbqkDwMz1h9mRrKM4IuI+XP4V1ZAhQ/jiiy+YOHEimzdvZsCAAaSlpdGnTx8AevXqxbBhw/LGv/rqq8ydO5ddu3axevVqHnjgAfbu3cvDDz8MnLvCavDgwbz++utMmzaN9evX06tXL8LCwujataurd6fYyMpx8sHys3TPGs6fbafo6I24RMNQP3rUhbcdn3HsG53ALiLuw+UzGXfv3p2jR48yfPhwkpKSiIyMZPbs2XknCe/btw+7/b896+TJk/Tr14+kpCQqVKhAVFQUf/31F40aNcob8+yzz5KWlkb//v05deoUbdq0Yfbs2edNCFia/bzmIIdSMggq703n1pGm40gJ1jfKj7r7F5F7ysaBHRuoWqeJ6UgiItgsy7JMhyhqqamp+Pv7k5KSUiLPx8nJzuaLd5/ms9RYBnZqRb8ba5mOJCXc2rdvJeLscpYHdKLV4G9NxxGREqogn99udxWVXLvEORMYkDWBmT4vcn/LKqbjSCng3e55AJqfnEPSPt02RUTMU8EpYZy5uVRcPQqAvdW7UdZX596I6zWIbscG70g8bbns/fUt03FERFRwSpq1C76jlnMPZyxfGnV52nQcKUWs1kMAaHZkGieOHDScRkRKOxWcEsRyOim77CMA1le5B/+KQWYDSanSpE1ntnvUxdeWxdZf3jcdR0RKORWcEmTDn79QL2cbZy0v6nV5znQcKWVsdjspMU/zQfbdPH2wNaczsk1HEpFSTAWnBLEt+QiAtZW7UCm4qtkwUiq1aNedGRUf5GCGD5OX7TMdR0RKMRWcEmLt3qOsT6tAmuVNjc46eiNm2O02Hr2pNgBf/rGbjCwdxRERM1RwSoixf+xjWE4/Xm8wlZBqdU3HkVKsS2QVbi+/nTFZw1j784em44hIKaWCUwLsOnqG2RuTAOhzSzPDaaS08/Kw80CtdFratxG++UtysrNMRxKRUkgFpwRY/fMnNGAvcQ0rUy+4vOk4IkTc8Tgn8SPMSiZx1njTcUSkFFLBKeaOHtrDHQfeZ5b3MJ5qpvMdxD34li3Plur3A1AxcQyW02k4kYiUNio4xdzOae/gZcths2cjGje/3nQckTyN7hhCuuVNLece1i+eajqOiJQyKjjFWMrJYzQ5/BMAmTFPGE4jkp9/pWDWBXcFwJ7widkwIlLqqOAUY5umfUg521n22KvR7OZ7TccROU/1254mx7LTJDOR7YlLTMcRkVLEw3QAuToZZ9Oou/trAI42e5QaDofhRCLnC61ej1lBvZl5qCy2jV58Emk6kYiUFjqCU0ytm/k5gZwimUpEdnrYdByRi6p+16v86rye6RuOsO94uuk4IlJKqOAUQ06nxe/bT5BsBbC7bm88vbxNRxK5qEZhftxYLwinBV/+sdN0HBEpJVRwiqEFW44w5tR1dGQ0je94ynQckct6tE01HnbMoM+aezhx5JDpOCJSCqjgFEOf/7ELgHtialO+vJ/hNCKXF1unMt19llHTdpitv+r2DSLieio4xcyWtQlU2jsLL7tFn9Y1TccRuSI2u52UFo8B0GD/t5xNO204kYiUdCo4xUz6vJGM8fqYz0N+IcTfx3QckSsW2f5BDtmCqcBp1s0YYzqOiJRwKjjFyMFdm4k4vRiA6u105ZQULx6eXuyr1xuAsM1f4czNNZxIREoyFZxi5MDMd3HYLNb5RFOzcYzpOCIF1vT2gaRSlnDrEGvnf2s6joiUYCo4xcSpY0k0PTodANv1ui2DFE9lywewMbQbAN4r9DWViLiOCk4xsXn6R5SxZbLTUYsmbTqbjiNy1WrfPoRfclvz3JkerN1/ynQcESmhVHCKgcyMdOruOXc4/2REf2x2/bFJ8VW5Sk0WNXmT9VYtvvj3lAciIoVNn5TFwG/L17HfGcgRKtIsvo/pOCLX7OEbagEwc/1h9p/Q7RtEpPCp4Lg5y7L4dHUWd2a9yszrp+DlrUvDpfhrFOZH1xpZvOYYx97vnzMdR0RKIBUcN/fXzuNsSTqNr6eDO9s0Nx1HpND0qZ9LT4/5ND/8PSknj5mOIyIljAqOm1s7+yv8OMO90VXxL+NpOo5IoWl2013ssYdT1pbB5umfmI4jIiWMCo4b27tlNY8de50l3k/SN6qC6Tgihcpmt3Ok8bkJK2vsnExOdpbhRCJSkhRJwRk9ejQ1atTAx8eHmJgYli9fftGxX3zxBTfccAMVKlSgQoUKxMXFnTf+oYcewmaz5Vs6dOjg6t0ocklzz92UcEe5FlSrWsVwGpHC16xTP07gRwjHWDt3kuk4IlKCuLzgTJkyhSFDhjBixAhWr15NREQE8fHxHDly5ILjFy5cyH333cfvv/9OQkIC4eHhtG/fnoMHD+Yb16FDBw4fPpy3fPttyZoV9cSRg0QcnwWAz42a2E9KJh/fsmwLvxeAcms+N5xGREoSlxecDz74gH79+tGnTx8aNWrE2LFjKVOmDOPHj7/g+MmTJ/PYY48RGRlJgwYN+PLLL3E6ncyfPz/fOG9vb0JCQvKWChVK1lc4W2d8go8tm+0edWnQsr3pOCIuU+e2wWRZHtTP2cqWFb+ZjiMiJYRLC05WVharVq0iLi7uvy9otxMXF0dCQsIVbSM9PZ3s7GwqVqyYb/3ChQupXLky9evXZ8CAARw/fvyi28jMzCQ1NTXf4s4yM9Kpu/c7AFKaP6KJ/aRECwwJJyGwG5/kdGXCJtNpRKSkcOkn57Fjx8jNzSU4ODjf+uDgYJKSkq5oG8899xxhYWH5SlKHDh2YNGkS8+fP5+2332bRokV07NiR3IvcnXjkyJH4+/vnLeHh4Ve/U0Vg3exxBHKKZCoRcWsv03FEXC74nvf4IOdevt+SyYGTmvhPRK6dWx8aeOutt/juu++YOnUqPj7/neCuR48e3HHHHTRt2pSuXbsyffp0VqxYwcKFCy+4nWHDhpGSkpK37N+/v4j2oOAsy2Lblo1kWw521+qJp5e36UgiLtcgxI/WdSrhtGDiX3tMxxGREsClBScwMBCHw0FycnK+9cnJyYSEhFzyue+99x5vvfUWc+fOpVmzZpccW6tWLQIDA9mxY8cFH/f29sbPzy/f4q6W7jrBC6c6E+ccRYPOT5qOI1Jk+rauzs32NVy//HHOpJ40HUdEijmXFhwvLy+ioqLynSD8nxOGY2NjL/q8d955h9dee43Zs2cTHR192dc5cOAAx48fJzQ0tFBymzR+yW4AbohqSkCFQMNpRIpO23qVecXnG262rWTDjH+YjiMixZzLv6IaMmQIX3zxBRMnTmTz5s0MGDCAtLQ0+vQ5d9PIXr16MWzYsLzxb7/9Ni+99BLjx4+nRo0aJCUlkZSUxJkzZwA4c+YMzzzzDEuXLmXPnj3Mnz+fLl26UKdOHeLj4129Oy51YO8Odm9ZDUCf1jUNpxEpWnaHg8MNHgIgfNtEcnNyzAYSkWLN5QWne/fuvPfeewwfPpzIyEgSExOZPXt23onH+/bt4/Dhw3njx4wZQ1ZWFnfffTehoaF5y3vvvQeAw+Fg3bp13HHHHdSrV4++ffsSFRXFH3/8gbd38T5f5eCMt/jN6xk+Dp5J7aBypuOIFLmmnR4hhbJUsZJZt+A703FEpBizWZZlmQ5R1FJTU/H39yclJcVtzsc5feo49g8bUdaWwfpbvqLpjXeZjiRiRMJnjxN7eBIbvSJo/PfFpuOIiBspyOe3W19FVZpsnDGasrYM9trDadKmq+k4IsbU7PQkOZadxllr2bVhmek4IlJMqeC4gdycHKrt+CcAyY36aGI/KdVCwuuwtvyNABz77SOzYUSk2NInqRtYO/9bwqwjnKQ8zTo9YjqOiHFlbxzEJmd1phyvxfEzmabjiEgxpILjBnxWfQbAlird8Cmjk4tF6ke3Y1jQaP6VfT3fLNtnOo6IFEMqOIZt2bmL4Mw9ZFsOancabDqOiFuw2e30aVMLgH8u3UtWjtNwIhEpblRwDBu3+jTXZ37KmGrvUbmK5r4R+Y9OTUOpUc5Jp/RfWDXvW9NxRKSYUcEx6PiZTH5Ze4hMvGhz652m44i4FS8POyOr/MXLnpMIXPUhllNHcUTkyqngGDR94V9k5+QQUdWf5uEBpuOIuJ36tw0i0/Kkbs52tq6cf/kniIj8mwqOIdlZGXRa2YffvJ5hUIQNm81mOpKI26lYuQprK9wKQNriUYbTiEhxooJjyNq5kwjiJH72DG5qFWU6jojbqtTuSQAiTi8m+cBOw2lEpLhQwTGkfOKXAOyo3h0vbx/DaUTcV+2m17HRqykeNie7Zn1iOo6IFBMqOAZsXbmA+jlbybI8qNvpcdNxRNxeVlQ/ABoc/BcZ6WcMpxGR4kAFx4DTi0cDsDYgjsDgqobTiLi/prfcx0FbMEtzGzB31TbTcUSkGFDBKWJHD+0hIuV3ACrc8oThNCLFg4enF7NumMqA7KcYszoNy7JMRxIRN6eCU8Q2zJ2Ipy2XzZ6NqRPR2nQckWLj7uvq4uNpZ/PhVJbvPmE6joi4ORWcIpSZk8vT+2LpnvkSp65/wXQckWIloIwXdzavSjVbMltnjzEdR0TcnApOEZq+9jDH07PZ59ecljd2NB1HpNh5uJkXv3sNoWfyexzeu9V0HBFxYyo4RcRyOvl2yRYAHoytjodDb71IQdWuU5/NPhE4bBZ7ZuuScRG5OH3KFpGtK+cz/vgDPOf1PT1aVjMdR6TYyol+BIBGh6dyNu204TQi4q5UcIpI2h+j8bOdJapiFhXLepmOI1JsNb35Xg7agvEnjXUzPzcdR0TclApOEUg+sJOI1EUAVLpFE/uJXAuHhwf76/QEoPLmibrLuIhckApOEdg161M8bE42eTWldrPrTccRKfYadhpIuuVNTedeNiXMMh1HRNyQCo6LZZxNo8HBf5379xYPG04jUjL4VwhkfWBHUq0yLF+71nQcEXFDKjgutn7OeCqQShKBNGt3v+k4IiVGUOdXiMkcxWv7IzhwMt10HBFxMyo4LmRZFv7rJwKwu2YPPDx1crFIYalVowZRdaritOCfS/eajiMibkYFx4VW7T1J3/THGOe8nQadBpmOI1Li9L6+BmCxa/lMXTIuIvmo4LjQhL/2sN8KZmuzZ6kQFGo6jkiJc0uDykwu8yFfWK+yfvaXpuOIiBtRwXGRpFNnmbUhCfjPb5kiUtgcdhuOWjcAELRxgi4ZF5E8KjgusuvHF/mH4316VDlG4zB/03FESqz/XjK+h01LZ5uOIyJuQgXHBTIz0mlw4HviHSu5p45+oxRxJf+KQawPPHfz2swl/zCcRkTchQqOC6yb/RUVSSWZSjSL62k6jkiJFxx3bobwiDN/krRvu+E0IuIOiqTgjB49mho1auDj40NMTAzLly+/5PgffviBBg0a4OPjQ9OmTZk5c2a+xy3LYvjw4YSGhuLr60tcXBzbt7vHX2qW00nAhq8A2F2jB566NFzE5Wo0jGaDdyQOm8XuWbrLuIgUQcGZMmUKQ4YMYcSIEaxevZqIiAji4+M5cuTIBcf/9ddf3HffffTt25c1a9bQtWtXunbtyoYNG/LGvPPOO3zyySeMHTuWZcuWUbZsWeLj48nIyHD17lzW1tW/UzdnO5mWJ/U6DTQdR6TUyI7qB4DP4WVkZOUYTiMiptksy7Jc+QIxMTG0bNmSUaNGAeB0OgkPD+fxxx/n+eefP2989+7dSUtLY/r06XnrrrvuOiIjIxk7diyWZREWFsbQoUN5+umnAUhJSSE4OJgJEybQo0ePy2ZKTU3F39+flJQU/Pz8CmlPz1n5/l1En57PioCOtBz8XaFuW0QuLjcnhyHvjGJaam3e7hbJvS3DTUcSkUJWkM9vlx7BycrKYtWqVcTFxf33Be124uLiSEhIuOBzEhIS8o0HiI+Pzxu/e/dukpKS8o3x9/cnJibmotvMzMwkNTU13+IKxw7tISJ1IQAVbtbEfiJFyeHhQeM2nbGw89Vfe3Dx724ichHbkk/zyD9XsnTXcaM5XFpwjh07Rm5uLsHBwfnWBwcHk5SUdMHnJCUlXXL8f/5ZkG2OHDkSf3//vCU83DW/2X27LoVXcx7kd5846kS0cclriMjF3Rsdjo+nnV2Hj5G4aavpOCKl0oS/9jBnYzIT/9pjNEepuIpq2LBhpKSk5C379+93yet0aVkXn+sfIbvzaJdsX0QuLaCMFy/U2slS70FYs541HUek1Ek5nc7U1QcA85PcurTgBAYG4nA4SE5Ozrc+OTmZkJCQCz4nJCTkkuP/88+CbNPb2xs/P798iytUq1SGF25rRPvGF84hIq7XplVLKtjO0Oz0HyTt32E6jkipsvmXd/nZ9jR/q7iBmJoVjWZxacHx8vIiKiqK+fPn561zOp3Mnz+f2NjYCz4nNjY233iAefPm5Y2vWbMmISEh+cakpqaybNmyi25TREqPmo1j2OjVDA+bk92zPzUdR6TUyM3JodrOydS3H6BDbS9sNpvRPC7/imrIkCF88cUXTJw4kc2bNzNgwADS0tLo06cPAL169WLYsGF545988klmz57N+++/z5YtW3j55ZdZuXIlgwadO2nXZrMxePBgXn/9daZNm8b69evp1asXYWFhdO3a1dW7IyLFQFbUwwA0OPgTGWfTDKcRKR3WLfyBMCuZFMrStMPDpuPg4eoX6N69O0ePHmX48OEkJSURGRnJ7Nmz804S3rdvH3b7f3vW9ddfzzfffMOLL77I3//+d+rWrcvPP/9MkyZN8sY8++yzpKWl0b9/f06dOkWbNm2YPXs2Pj4+rt4dESkGmt5yH0kJrxHCUZbPHk+rOx83HUmkxPNY8RkAm0LvJLZsecNpimAeHHfkynlwRMQ9JEx6idhdn7DDUZvaL6zEZi8V11SIGLF38yqqT7mFXMvGkb8tI7R6fZe8jtvMgyMiYkrDTgPJsDypk7uTjWuXmY4jUqIl/XbuFinryrV2WbkpKBUcESmRAgJDmBo+jFsy32PMZm/TcURKrJRTx2lybBYAntc/ajjNf6ngiEiJFdGpH7usMGZvSOJwylnTcURKpB/WneTR7KeY5tWJxrG3mY6TRwVHREqsRmF+tKpZkVynxZQl20zHESlxcp0W/1y2nz+czTjT7m23OtfNfZKIiLhA/yh/Rnl+Qs/lXXTJuEghW7j1CHuPp+Pn40HX5mGm4+SjgiMiJVrbiDpEO3YQxEnWz/nKdByREsX310d41uM7+jYvRxkvl888UyAqOCJSonl4erG7Zg8AKqwfj+V0Gk4kUjLs2bKa69N/5xHHr9wTEWg6znlUcESkxGvQaVDeJeNbV86//BNE5LLyLg0vez1hNdzj0vD/pYIjIiVehaBQ1lW4FYC0P0YbTiNS/KWcPEazozMB8Gw9wHCaC1PBEZFSodIt527X0Cx1MUcO7jacRqR42zzzH5SxZbLbXt2tLg3/Xyo4IlIq1G52PZu8muJpy2XnTN1lXORq5ebkEL7jawCONnrIrS4N/1/umUpExAXSWj7Ba9k9ee7wjWRk55qOI1IsrV/4A1X+c9fwjv1Mx7koFRwRKTWa33I3s8vfzb50T35de8h0HJFiaeIOX77KiWdtlfvxdYO7hl+MCo6IlBoeDjsPxlYH4Ks/d+uScZEC2p58mql7PHkttzc1u71qOs4lqeCISKnSo2U4Xb2W8eaJJ9m8fK7pOCLFyoS/9gBwa6NgwiuWMRvmMlRwRKRUCSjjxf2Bu4i07yLjT10yLnKlUk4c5bo1zxFl20rvfx8JdWcqOCJS6gS1+/cl46f/JGnfdsNpRIqHzTNH0dm+hPd8JxJbq5LpOJelgiMipU7NxjFs8I7Ew+Zk96xPTMcRcXs52VlU3zEZgKON+7jtpeH/y/0Tioi4QHbUuctbGx7+ibNppw2nEXFv6xd8SyhHOUl5mnV82HScK6KCIyKlUrNbenDIVpkAzrB+1hem44i4Na9V5/4f2VKlGz5lyhlOc2VUcESkVHJ4eLCvdk8AgjZN0CXjIhexc91fNM5aT45lp1bHJ0zHuWIqOCJSajW8bRCLrUjezOjGXzuPmY4j4paOLzh3a5O1fjcRXLW24TRXTgVHREot/wqB/NZiNPOc0Xz1117TcUTczvEzmcw8HsI+ZxBlbxxkOk6BqOCISKnW+/oaAMzfcoQ9x9LMhhFxM98u38eE7DieDBpH/ahbTMcpEBUcESnVageV4446ngyy/8Suf40wHUfEbWTnOvnn0nNHNnu1qV0sLg3/X8UrrYiIC/Sre4ahnj/S6tDXnE45YTqOiFtYMf9Hrj/zG6Hl7NzWNMx0nAJTwRGRUq/JDV3Zaw+nnO0sG2fo9g0iltNJ4PJ3+dBrDO9WXYKXR/GrC8UvsYhIIbPZ7SQ1fAiA8O3/JDcnx2wgEcO2rpxPvZxtZFqeNOw0wHScq6KCIyICNOv0CCmUpYqVzPrfvzcdR8So9MX/vjS8YnsqVa5iOM3VUcEREQF8y5ZnU2g3ADxXjDWcRsScw3u3EnF6MQBBcU8aTnP1VHBERP6tZqcnybHsNM5ay871S03HETFi76yPcdgsNnhHUrNxjOk4V82lBefEiRP07NkTPz8/AgIC6Nu3L2fOnLnk+Mcff5z69evj6+tLtWrVeOKJJ0hJSck3zmaznbd89913rtwVESkFQsLrsNI/jik5bZmy7qTpOCJFLu30KRol/QxATqviee7Nf3i4cuM9e/bk8OHDzJs3j+zsbPr06UP//v355ptvLjj+0KFDHDp0iPfee49GjRqxd+9eHn30UQ4dOsSPP/6Yb+xXX31Fhw4d8n4OCAhw5a6ISCnh1e0znhuTgNcmePh0BpXL+5iOJFJk5izfQHBuDap5nKRZ23tMx7kmNsuyLFdsePPmzTRq1IgVK1YQHR0NwOzZs+nUqRMHDhwgLOzKrqn/4YcfeOCBB0hLS8PD41wfs9lsTJ06la5du15VttTUVPz9/UlJScHPz++qtiEiJded/1jCmn2neKJdXYbcWs90HJEi4XRatPtgEbuPpfFmx2rcf1NT05HOU5DPb5d9RZWQkEBAQEBeuQGIi4vDbrezbNmyK97Of3biP+XmPwYOHEhgYCCtWrVi/PjxXKqnZWZmkpqamm8REbmYvm1q0ti2h2p/vUDGWd2+QUqHhduOsPtYGuV9POhyXUPTca6ZywpOUlISlStXzrfOw8ODihUrkpSUdEXbOHbsGK+99hr9+/fPt/7VV1/l+++/Z968eXTr1o3HHnuMTz/99KLbGTlyJP7+/nlLeHh4wXdIREqNDg2DGOf9IXdbc1k/60vTcUSKxPY5YwkkhR4twynr7dIzWIpEgQvO888/f8GTfP932bJlyzUHS01N5bbbbqNRo0a8/PLL+R576aWXaN26Nc2bN+e5557j2Wef5d13373otoYNG0ZKSkresn///mvOJyIll4enJ3vq9AQgcMN4LKfTcCIR19q1YRmPnPyAxd6DeSiqguk4haLAFW3o0KE89NBDlxxTq1YtQkJCOHLkSL71OTk5nDhxgpCQkEs+//Tp03To0IHy5cszdepUPD09Lzk+JiaG1157jczMTLy9vc973Nvb+4LrRUQupuFtj5P+0RhqOvew/s9faXpjF9ORRFzm+G8fUgvYXD6WqJBQ03EKRYELTlBQEEFBQZcdFxsby6lTp1i1ahVRUVEALFiwAKfTSUzMxa+rT01NJT4+Hm9vb6ZNm4aPz+WvYEhMTKRChQoqMSJSaPwrBLKscmdijv6IM2EUqOBICXXs0F4iTs4FG5RrW3wn9vv/XHYOTsOGDenQoQP9+vVj+fLlLFmyhEGDBtGjR4+8K6gOHjxIgwYNWL58OXCu3LRv3560tDTGjRtHamoqSUlJJCUlkZubC8Cvv/7Kl19+yYYNG9ixYwdjxozhzTff5PHHH3fVrohIKVW14xCclo2Is8vZuzXRdBwRl9g+8yO8bLls8WxE/ehbTMcpNC49i2jy5MkMGjSIdu3aYbfb6datG5988kne49nZ2WzdupX09HQAVq9enXeFVZ06dfJta/fu3dSoUQNPT09Gjx7NU089hWVZ1KlThw8++IB+/fq5cldEpBSqUqsxa8rG0jz9L5LmfkD1+pNMRxIpVGfTTtPgwA8ApEc9YjhN4XLZPDjuTPPgiMiV2pgwi8DZjzLO2ZlHnnufSuX0VbiUHMt+eI+Yja9xyBZM8AubcHi499VTbjEPjohISdAoJp5HK03g8+yOfL10n+k4IoXG6bTYsH0XGZYn++r2cvtyU1AqOCIil2Cz23noxnOzGf9z6R4ysnMNJxIpHAu3HeG11NtozxiadC5557Gq4IiIXEanpqGE+3vRMv0Pls+ebDqOSKH48o/dAHSIaUK58v6G0xQ+FRwRkcvwdNgZWWM1Y7w+pvqat3Hm6iiOFG/bNydyetcKHHYbva+vYTqOS6jgiIhcgYhO/Tht+VLdeYD1i34wHUfkmqTMep1fvV/k49C5VAnwNR3HJVRwRESuQHn/imwM6QqAx9J/mA0jcg2S9u8gMmU+APVv6GY4jeuo4IiIXKEatw0lx7LTOGstO9YuMR1H5Krsmf4eHjYnG70iqBt5g+k4LqOCIyJyhUKq1SXR72YATs3/wHAakYJLPXWcJkk/A5Bz3SCzYVxMBUdEpAD82z0FQGTKApL27zCcRqRgNv36MeVsZ9ljD6fpTXebjuNSKjgiIgVQN/IGNno1Y71Vi2kJG03HEbliWZkZ1Nr5TwCONO2P3VGyK0DJ3jsRERc4fscE7sx6hY83eJNyNtt0HJErsjBhGTkWHKUCER0fNh3H5VRwREQK6IbGtagf7EdaVi6Tl+01HUfksizL4oNEGzdmfsRvLT/H26eM6Ugup4IjIlJANpuNR26qhR9nyF78MRln00xHErmkxduPsSXpNF5e3nS6+WbTcYqECo6IyFXo3CyUX3xf5UnnJNbN/Nx0HJFL+mvu9zjIpXvLcPzLeJqOUyRUcEREroKnh4PkOvcCELLxC92+QdzW9sQ/GHbs78z3foa/xYSajlNkVHBERK5Sk85PkEoZqjkPsnb+t6bjiFxQ6m/vAXDUvynhlSsaTlN0VHBERK5SOb8KbAy7BwDfFaMNpxE53/4dG4g8vQiAwPhnDKcpWio4IiLXoO4dT5NledAgexNbls01HUckn0Mz38Fhs1jr24qajWNMxylSKjgiItcgMKQaiRU7AHB20YeG04j817HD+4g8PhMAz5uGGk5T9FRwRESuUUjHZ8i0PNh52oOth06ZjiMCwPZp7+Jty2aLR0MatmpvOk6RU8EREblG1epF8mLtH3g6+1HG/rHHdBwRUjOyyTi0CYCMmMex2Uvfx33p22MRERfo3S4KgGlrD7H/RLrhNFLafbNsH30yhzCw7Ps0u6WH6ThGqOCIiBSCJlX8uaFuILWs/Sz/WVdUiTkZ2bmM+3M3ADff0gG7w2E4kRkepgOIiJQUQyNyidz/LJl7PTmW1J3AkGqmI0kptHDBHHJOpxDqX5k7IsJMxzFGR3BERApJRIvr2OrRAG9bNtt/edd0HCmFcrKzaLp0MEu8n+TFJifx8ii9H/Old89FRAqZzW7nbMyTADQ99AMpJ48ZTiSlTeKscVSxksm0eXPLzaXvyqn/pYIjIlKImt3SnT32apSznWXzLx+YjiOliDM3l8DEc+d/ba3xIL7l/AwnMksFR0SkENkdDo5FPgZAvT3/5GzaacOJpLRY+9vX1HDuJ5UyNOpa+ib2+/9UcERECllkx74cslWmIqmsm/ax6ThSClhOJ+WXn/tvbWPVHvgFVDKcyDwVHBGRQubh6cX+ho9w3CrP7ztSyczJNR1JSrj1i36iTu5O0i1vGnR51nQct6CCIyLiApFdBtLN6zPGpt3EDysPmI4jJdyq1cvItDxYF3IXFYJCTcdxCy4tOCdOnKBnz574+fkREBBA3759OXPmzCWf07ZtW2w2W77l0UcfzTdm37593HbbbZQpU4bKlSvzzDPPkJOT48pdEREpEG9vXx5q2wiAMQt3kpXjNJxISqplu47zytG2xOV8Qq07XzQdx224tOD07NmTjRs3Mm/ePKZPn87ixYvp37//ZZ/Xr18/Dh8+nLe88847eY/l5uZy2223kZWVxV9//cXEiROZMGECw4cPd+WuiIgUWI9W1Qgq60nj1MUsm/216ThSQo36fQcAN0Y3o3JIVcNp3IfLCs7mzZuZPXs2X375JTExMbRp04ZPP/2U7777jkOHDl3yuWXKlCEkJCRv8fP776Vuc+fOZdOmTXz99ddERkbSsWNHXnvtNUaPHk1WVpardkdEpMB8PB28X3c9n3t9SK1Vr5OTrb+jpHBtWruMEztW4LDbePSm2qbjuBWXFZyEhAQCAgKIjo7OWxcXF4fdbmfZsmWXfO7kyZMJDAykSZMmDBs2jPT0/964LiEhgaZNmxIcHJy3Lj4+ntTUVDZu3HjB7WVmZpKamppvEREpCtG3P8xJ/KhiJbNm5pem40gJkzPrBWZ4v8D71ZcSXrGM6ThuxWUFJykpicqVK+db5+HhQcWKFUlKSrro8+6//36+/vprfv/9d4YNG8Y///lPHnjggXzb/d9yA+T9fLHtjhw5En9//7wlPDz8andLRKRAypTzZ0vNXgAErx1Frs4XlEKydeUCmmWsIMey0/LW+0zHcTsFLjjPP//8eScB//9ly5YtVx2of//+xMfH07RpU3r27MmkSZOYOnUqO3fuvOptDhs2jJSUlLxl//79V70tEZGCanrn06RQlmrOgyTOmWA6jpQQGb+9CcDqCh2oUquh4TTup8B3Ex86dCgPPfTQJcfUqlWLkJAQjhw5km99Tk4OJ06cICQk5IpfLyYmBoAdO3ZQu3ZtQkJCWL58eb4xycnJABfdrre3N97e3lf8miIihamcXwUSqj1A7L7PqLTqY5wd+mB3OEzHkmJs2+qFRPz76E2VO3Tl1IUUuOAEBQURFBR02XGxsbGcOnWKVatWERUVBcCCBQtwOp15peVKJCYmAhAaGpq33TfeeIMjR47kfQU2b948/Pz8aNSoUQH3RkSkaDS681lSP/4nNZz7WDV7PFG39TMdSYqxs/PeAGBNhfa0rNXYcBr35LJzcBo2bEiHDh3o168fy5cvZ8mSJQwaNIgePXoQFhYGwMGDB2nQoEHeEZmdO3fy2muvsWrVKvbs2cO0adPo1asXN954I82aNQOgffv2NGrUiAcffJC1a9cyZ84cXnzxRQYOHKijNCLitvwrBLKxei82OGvwzYaz5Dot05GkmNq2eiERZ5eTY9kJvf0l03HclkvnwZk8eTINGjSgXbt2dOrUiTZt2vD555/nPZ6dnc3WrVvzrpLy8vLit99+o3379jRo0IChQ4fSrVs3fv3117znOBwOpk+fjsPhIDY2lgceeIBevXrx6quvunJXRESuWZN7h9PT/g7/OlmbX9deeroMkYuZtXQ9yVYAawJupWqdJqbjuC2bZVml7teI1NRU/P39SUlJyTfHjoiIq43+fQfvztlKzcCyzHvqRjwcumOOXLl1B05xx6gl+NiymPNYFNXDq5mOVKQK8vmt/7NERIpQ7+trUKVMLh1PfsPKmeNNx5Fi5oN52wDoFFmz1JWbglLBEREpQuW8PXi35hqe9ZxC+Op3yM7KNB1JiolNK3/Hf/tUPO0WT8bVNR3H7angiIgUscg7B3Mc/3OzG/86xnQcKQYspxNr7kt87PUPxladS/VKZU1HcnsqOCIiRaxMOX+2130YgPD1o8jKzDCcSNzdhj9/pXHWerIsDxp3fsJ0nGJBBUdExIDIO4dwjABCOcqaXz4xHUfcmOV04r34dQBWB99FSHgdw4mKBxUcEREDfMqUY2eDRwGovWk0Z9NOG04k7mrt/O+ol7ONdMubOncNNx2n2FDBERExpPmdT3HIVplATpH441um44gbcubm4pfwNgBrq3QnMEQ3i75SKjgiIoZ4eftwsPlQpudex5u765CSnm06kriZ1bPHU8u5h9OWL4266Z5TBaGCIyJiUIvbH2FUpRdYn1GZsYt3mo4jbiQn18nEDTmsdtZhQ43e+FcKNh2pWFHBERExyGG38XT7+gB8tWQ3ySlnDScSdzFl5X5+PVmNhz1G0rT7y6bjFDsqOCIihrVrWJn4qtm8wWh2TxpgOo64gfSsHD76bTsAj7erS7kyvoYTFT8qOCIihtlsNp6M9qGb4w+ij/3C/h3rTUcSw1Z9+yoPnv0nDSpAz5jqpuMUSyo4IiJuoNF1HVjr2woPm5Mjv7xkOo4YdDz5AC12fcYTHj/zepMkvDz0UX019K6JiLiJch1fASDq9O9sW73QbBgxZscPwylry2C7Rx1adHjIdJxiSwVHRMRN1G52PSv82wOQM+sFLKfTcCIpagd2bKDF0Z8ByLz5ZewOh9lAxZgKjoiIGwm/eyQZlieNsjewZt5k03GkiCX//AKetlzW+rSkSevOpuMUayo4IiJuJCS8DmuqPgCA57LRZOXoKE5psW31IqLOLMRp2Sh/+xum4xR7KjgiIm6mafcRjLF35770oUxettd0HCkClmVxdvYIAFYFxFOrSYzhRMWfCo6IiJsp51cBv/gXOEMZPp6/XbdwKAVmrD/MgNQ+THXeRLV73jQdp0RQwRERcUPdo8OpW7kcp9Kz+H7GTNNxxIUysnMZOXMLhwhk343vE1y1tulIJYKH6QAiInI+D4edl9pXpdz399Jkwx4ORv1JlVoNTccSF5j823IOnjpLmL8P/W+sZTpOiaEjOCIibuqGRjXx9PXDy5bDkX89bTqOuMCRg7vpsbQLozw/4e+3huPrpcvCC4sKjoiIm7LZ7ZTr8g45lp3maX+yfvFU05GkkO39/jnK2jKp45PKbS3qmI5ToqjgiIi4sZqNWrIy+G4A/Ba+SFZmhuFEUli2rV5Iy5Q5ANg7voXNro/kwqR3U0TEzTW8byQn8KO68wCrf3jLdBwpBJbTiXPm8wAs9+9AvRY3GU5U8qjgiIi4Of8Kgexsdu4cnCbbx3LskObGKe5WTvsHDXI2k255U7P726bjlEgqOCIixUBUl0Fs86jHXqsy4+avMR1HrkHK8WRqJ54rNetqP0JQWA2zgUooFRwRkWLA7nCQdc9kOme9wZiNnqzae8J0JLlKk2cvJtPyYI89nBbdXzAdp8RSwRERKSaa1K/H3dHVABgxbSO5TstwIimoxP2neHdDGeIy3+VU56/w8vYxHanEUsERESlGnu3QgEo+Tm5NHs+yKTp3ozjJdVq8+PN6LAvim9chsnlL05FKNBUcEZFiJLCcN58228uTHj8RseVDkvbvMB1JrtDSnz6lYdI0/HzsDOukWaldzaUF58SJE/Ts2RM/Pz8CAgLo27cvZ86cuej4PXv2YLPZLrj88MMPeeMu9Ph3333nyl0REXEb13UZwGbPRpS1ZZD07SAsp9N0JLmMY0n7abphJO96fs6oiH0Elfc2HanEc2nB6dmzJxs3bmTevHlMnz6dxYsX079//4uODw8P5/Dhw/mWV155hXLlytGxY8d8Y7/66qt847p27erKXRERcRt2hwPfu0aRZTmITE8gce4k05HkMvZ8Mxg/0tnuqEPrzn1NxykVXHazzc2bNzN79mxWrFhBdHQ0AJ9++imdOnXivffeIyws7LznOBwOQkJC8q2bOnUq9957L+XKlcu3PiAg4LyxIiKlRY2GUSRU7U3swfFUXfoyqdd1xi+gkulYcgFrF3xHdOpv5Fo2rNs+wOGh+1wXBZcdwUlISCAgICCv3ADExcVht9tZtmzZFW1j1apVJCYm0rfv+W134MCBBAYG0qpVK8aPH49lXfxqgszMTFJTU/MtIiLFXfMHXme/LYwgTrL5a92M0x2lnjpO6OJhAKwIvV8zFhchlxWcpKQkKleunG+dh4cHFStWJCkp6Yq2MW7cOBo2bMj111+fb/2rr77K999/z7x58+jWrRuPPfYYn3766UW3M3LkSPz9/fOW8PDwgu+QiIib8fEtS0q7c1dSNTk6g7VbthtOJP/f5kmDqcwJDthCiXhQV70VpQIXnOeff/6iJwL/Z9myZcs1Bzt79izffPPNBY/evPTSS7Ru3ZrmzZvz3HPP8eyzz/Luu+9edFvDhg0jJSUlb9m/f/815xMRcQdN2tzB1ODHic96m6EzD5GRnWs6kvzbqsRVRB//FYDU9h/iW7a84USlS4G/CBw6dCgPPfTQJcfUqlWLkJAQjhw5km99Tk4OJ06cuKJzZ3788UfS09Pp1avXZcfGxMTw2muvkZmZibf3+Weme3t7X3C9iEhJ0LbXcN78aDEHjpzh/blbeeG2RqYjlXrpWTk8NTeVwKwRPFrjMO1jO17+SVKoClxwgoKCCAoKuuy42NhYTp06xapVq4iKigJgwYIFOJ1OYmJiLvv8cePGcccdd1zRayUmJlKhQgWVGBEplSqU9eKtu5rSd+JKNiyZzqagQzRqFWc6Vqn2/txt7DuRTo5/M2J7DzIdp1Ry2ancDRs2pEOHDvTr14+xY8eSnZ3NoEGD6NGjR94VVAcPHqRdu3ZMmjSJVq1a5T13x44dLF68mJkzZ5633V9//ZXk5GSuu+46fHx8mDdvHm+++SZPP60T7ESk9GrXMJg36myh54E3ODgrmLSGyylbPsB0rFJp08rf+eOvbUBV3ryrKeV9PE1HKpVcOg/O5MmTadCgAe3ataNTp060adOGzz//PO/x7Oxstm7dSnp6er7njR8/nqpVq9K+ffvztunp6cno0aOJjY0lMjKSzz77jA8++IARI0a4cldERNxe57sfIolAqljJbJj4lOk4pdLpU8cJmNGfaZ4vMKzeYdrWr3z5J4lL2KxLXV9dQqWmpuLv709KSgp+fn6m44iIFJr1i3+h6YJz5y6uv2USTW/sYjhR6bLiw3tpmTKHQ7bKlB+8jPL+FU1HKlEK8vmte1GJiJQgTW/swrJKXQEIWjCElJPHzAYqRVbNHEfLlDnkWjZSO4xWuTFMBUdEpIRp8tDHHLQFE8Ixdo7ro3tVFYHkAzupu/wlAJaH96FBzPmnWEjRUsERESlhypYPIK3z52RbDlqcWcz8WT9c/kly1Zy5uRz959/wI41tHvWI7vWW6UiCCo6ISIlUr0Vbltd/mqeyBjAwwY8tSbpFjass+nE0TTITSbe88e3+JZ5emrLEHajgiIiUULE9hnGy7l1k5jgZ9M0a0rNyTEcqcVbuOcGja2vybva9rG/2d8LrRpiOJP+mgiMiUkLZ7TbevyeCYD9vThw5xNyvXjUdqUQ5diaTgd+sJtNpZ1+Tx2h115OmI8n/UMERESnBKpXz5pO76vGr9wt0PfwxK6eNNR2pRMjNyWH25y9yKvU0dSqX4627mmKz2UzHkv+hgiMiUsLFNKjGvmp3AtBo1XB2rvvLcKLib/lXQ3kg9XMme7/F2J7NKevtshsDyFVSwRERKQVa9X6bdT7RlLFlUuanXpw4ctB0pGIr8bdviT044dwPrR6mTrAmjHVHKjgiIqWAw8OD6v2/44AtlFCOcvjLHmRnZZqOVewc3LWRWn8OBWBZ0N1E39bPcCK5GBUcEZFSwr9iELn3TibN8qFx1jpWf/GY6UjFSsqJo+R+fQ9+pLHVowHNHx5tOpJcggqOiEgpUr1hFNtavw9AYPISpv61yXCi4iErM4MDY++imvMgSQRS6W/f4+XtYzqWXILOihIRKWWat3+AWcdP8dzaymTM2EtYSDAxtSqZjuW2LMviwx/m8nDmbs7gS/o931ArrLrpWHIZOoIjIlIKxXcfSOsmtcnKdfLwpJVs2XfYdCS39Y+FOxmzwUG3rFfZfstn1GoSYzqSXAEVHBGRUshut/Fh90ha1qjAndkzqDD+eg7t2Wo6ltuZtXoH784597787Y5baH5TF8OJ5Eqp4IiIlFI+ng6+vL8pfbwXEswJcid25eTRQ6ZjuY11C//Fdb+0pa19DX1a16BXbA3TkaQAVHBEREoxf7/ylO37C0kEEW4d4uhnXUg7fcp0LOM2LplBvd8foYLtNIMqruTFTg1NR5ICUsERESnlKlepSeZ9P3KS8tTL2cauUV05m3badCxjtqz4jZpz++BjyybR9zqaPf4dDoc+Losb/YmJiAjV60dy5PZJpFveNM1cw66PbyPtdIrpWEVue+IfVJn+AGVsmaz3bk6DJ37S5eDFlAqOiIgAUD/6FvZ1+pozli+Ns9Yy7otPOJ2RbTpWkdm57i+Cfu5BedtZNnk2ofbjv+DjW9Z0LLlKKjgiIpKnQUx7DnX5jg+5nw+OtODBcctJOVvyS07CzuMs+9fHBHCGrR71qfb4dMqU8zcdS66BCo6IiORTr0Vbbu33FgFlPEncf4qHv1hQom/OOXP9YXqPX85LmT35sdz9hA6aSTm/CqZjyTVSwRERkfM0qeLPd/2vo0oZJ88ce4mMMW3ZvWmF6ViFbsG0STzxzQqycp20b1KF258chV9AoOlYUghUcERE5IIahPjxzf21CHOkEGYdIWhKZ9Yu+M50rELhzM0l4YvB3LL6cV51jOeBmHBG3d8CH0+H6WhSSFRwRETkoqrXaUy5gYvY6NWMcrazNF30KEsnv4LldJqOdtVOHj3MhnfjiT34FQA1a9fntS5NcNhthpNJYVLBERGRSwoIDKHu0Hksr9gZu83iuu0fsPLj+zhTDCcE3LpyAZmj29AsYwVnLS9WRL5JbJ+3sdn1cVjS6E9UREQuy8vbh5aDJrG03tPkWjZapsxm+Uf3sWrvCdPRrojldLL02zep+evdhHCM/bYwDt8znZZdB5qOJi6igiMiIlfEZrdz3f0vsaX9ZPbYqvB6+l3cMzaBd+dsISvHfb+y2n8inYFfLaT+ltF42XJZXe5GAgYv0V3BSzgP0wFERKR4adz6NlJbxBH562Z2rT7I6N934rt2IvG3dqRu8xtNx8uTnZ3Fl3/u4+MF28nIdlLWoxfdGpUhpscL+kqqFLBZlmWZDlHUUlNT8ff3JyUlBT8/P9NxRESKrZnrD/P9Tz8wzjkch81ipV8cYXe9SViN+kZzbVk2F685z/B2xp3McbbkuloVeePOptQOKmc0l1ybgnx+q+Co4IiIXJNjh/aye8ozRJ2ai91mkWV5sDq0Ow3vfQX/ikFFmmVTwixyFr1Ls4xVAGyhBhtvn85dUVWx2XSVVHFXkM9vlx2je+ONN7j++uspU6YMAQEBV/Qcy7IYPnw4oaGh+Pr6EhcXx/bt2/ONOXHiBD179sTPz4+AgAD69u3LmTNnXLAHIiJyJQLDqtPyqe/ZddcMNnhH4mXL4bqkyTg+bsqyT3uzZddel76+5XSy9vcf2PzG9TSa04NmGavIsewsr3AbwQNn0y06XOWmFHJZwcnKyuKee+5hwIABV/ycd955h08++YSxY8eybNkyypYtS3x8PBkZGXljevbsycaNG5k3bx7Tp09n8eLF9O/f3xW7ICIiBVAnojWNn/udtTd9yW57dcrZzlL72ALu+HwNd/5jCT+uOkDK6dOF8lqWZbHuwClGztzMD288SMSih2mYvZEsy4NllbqS3PsvWj35DRWCQgvl9aT4cflXVBMmTGDw4MGcOnXqkuMsyyIsLIyhQ4fy9NNPA5CSkkJwcDATJkygR48ebN68mUaNGrFixQqio6MBmD17Np06deLAgQOEhYVdUSZ9RSUi4lqW08nGhBksX7+FN/c1JsdpYcPJCu/HOOEZwvGg6yjX8BZqNb+ZsuUDLru97KxMDuxYx/EdK8k5sIbRKbH8kVIZgHb2VXzqOYp1IXdRu8vzBIXVcO3OiTEF+fx2m6uodu/eTVJSEnFxcXnr/P39iYmJISEhgR49epCQkEBAQEBeuQGIi4vDbrezbNky7rzzzgtuOzMzk8zMzLyfU1NTXbcjIiKCzW6nSevONGndmdtPZ/DDygOsXrGEwPRUAnNS4fA2ODwJFsApynHCHsjSgE6sr3ofYMM3/SC3Hx6NI/csZbNPUC1nLzVtOdT89/ZX5mSw0vN+bmlYmdsbP4StzlNcV7a8yV0WN+M2BScpKQmA4ODgfOuDg4PzHktKSqJy5cr5Hvfw8KBixYp5Yy5k5MiRvPLKK4WcWERErkTl8j4MvLkO3FyH5ANt2LdqDuxaRLWUFQRznADOEOA8w7QjSXx7aD8AtW0HGe69+L8bscEZy5f9XrVI9a9Pqwad6Hvjrfh66d5RcmEFKjjPP/88b7/99iXHbN68mQYNGlxTqMI2bNgwhgwZkvdzamoq4eHhBhOJiJROwVVrE1z1MeAxAFJPHefE4d2kJu2hrhXEYGcodpuN8rYqLDv6d2xeZfAsW4HKdaIIrV6Phg4VGrkyBSo4Q4cO5aGHHrrkmFq1al1VkJCQEACSk5MJDf3vSWHJyclERkbmjTly5Ei+5+Xk5HDixIm851+It7c33t7eV5VLRERcxy+gEn4BlaBhNM3OezSy6ANJiVGgghMUFERQkGvmNKhZsyYhISHMnz8/r9CkpqaybNmyvCuxYmNjOXXqFKtWrSIqKgqABQsW4HQ6iYnRlNsiIiJyjssuE9+3bx+JiYns27eP3NxcEhMTSUxMzDdnTYMGDZg6dSoANpuNwYMH8/rrrzNt2jTWr19Pr169CAsLo2vXrgA0bNiQDh060K9fP5YvX86SJUsYNGgQPXr0uOIrqERERKTkc9lJxsOHD2fixIl5Pzdv3hyA33//nbZt2wKwdetWUlJS8sY8++yzpKWl0b9/f06dOkWbNm2YPXs2Pj4+eWMmT57MoEGDaNeuHXa7nW7duvHJJ5+4ajdERESkGNKtGjQPjoiISLHgFrdqEBERETFFBUdERERKHBUcERERKXFUcERERKTEUcERERGREkcFR0REREocFRwREREpcVRwREREpMRRwREREZESx2W3anBn/5m8OTU11XASERERuVL/+dy+kpswlMqCc/r0aQDCw8MNJxEREZGCOn36NP7+/pccUyrvReV0Ojl06BDly5fHZrMV6rZTU1MJDw9n//79us/V/6P35tL0/lya3p9L0/tzcXpvLq04vT+WZXH69GnCwsKw2y99lk2pPIJjt9upWrWqS1/Dz8/P7f9DMUXvzaXp/bk0vT+Xpvfn4vTeXFpxeX8ud+TmP3SSsYiIiJQ4KjgiIiJS4qjgFDJvb29GjBiBt7e36ShuR+/Npen9uTS9P5em9+fi9N5cWkl9f0rlScYiIiJSsukIjoiIiJQ4KjgiIiJS4qjgiIiISImjgiMiIiIljgpOIRo9ejQ1atTAx8eHmJgYli9fbjqS21i8eDGdO3cmLCwMm83Gzz//bDqS2xg5ciQtW7akfPnyVK5cma5du7J161bTsdzGmDFjaNasWd4kZLGxscyaNct0LLf01ltvYbPZGDx4sOkobuHll1/GZrPlWxo0aGA6lls5ePAgDzzwAJUqVcLX15emTZuycuVK07EKhQpOIZkyZQpDhgxhxIgRrF69moiICOLj4zly5IjpaG4hLS2NiIgIRo8ebTqK21m0aBEDBw5k6dKlzJs3j+zsbNq3b09aWprpaG6hatWqvPXWW6xatYqVK1dyyy230KVLFzZu3Gg6mltZsWIFn332Gc2aNTMdxa00btyYw4cP5y1//vmn6Uhu4+TJk7Ru3RpPT09mzZrFpk2beP/996lQoYLpaIXDkkLRqlUra+DAgXk/5+bmWmFhYdbIkSMNpnJPgDV16lTTMdzWkSNHLMBatGiR6Shuq0KFCtaXX35pOobbOH36tFW3bl1r3rx51k033WQ9+eSTpiO5hREjRlgRERGmY7it5557zmrTpo3pGC6jIziFICsri1WrVhEXF5e3zm63ExcXR0JCgsFkUhylpKQAULFiRcNJ3E9ubi7fffcdaWlpxMbGmo7jNgYOHMhtt92W7+8gOWf79u2EhYVRq1Ytevbsyb59+0xHchvTpk0jOjqae+65h8qVK9O8eXO++OIL07EKjQpOITh27Bi5ubkEBwfnWx8cHExSUpKhVFIcOZ1OBg8eTOvWrWnSpInpOG5j/fr1lCtXDm9vbx599FGmTp1Ko0aNTMdyC9999x2rV69m5MiRpqO4nZiYGCZMmMDs2bMZM2YMu3fv5oYbbuD06dOmo7mFXbt2MWbMGOrWrcucOXMYMGAATzzxBBMnTjQdrVCUyruJi7irgQMHsmHDBp0n8P/Ur1+fxMREUlJS+PHHH+nduzeLFi0q9SVn//79PPnkk8ybNw8fHx/TcdxOx44d8/69WbNmxMTEUL16db7//nv69u1rMJl7cDqdREdH8+abbwLQvHlzNmzYwNixY+ndu7fhdNdOR3AKQWBgIA6Hg+Tk5Hzrk5OTCQkJMZRKiptBgwYxffp0fv/9d6pWrWo6jlvx8vKiTp06REVFMXLkSCIiIvj4449NxzJu1apVHDlyhBYtWuDh4YGHhweLFi3ik08+wcPDg9zcXNMR3UpAQAD16tVjx44dpqO4hdDQ0PN+SWjYsGGJ+RpPBacQeHl5ERUVxfz58/PWOZ1O5s+fr/ME5LIsy2LQoEFMnTqVBQsWULNmTdOR3J7T6SQzM9N0DOPatWvH+vXrSUxMzFuio6Pp2bMniYmJOBwO0xHdypkzZ9i5cyehoaGmo7iF1q1bnzclxbZt26hevbqhRIVLX1EVkiFDhtC7d2+io6Np1aoVH330EWlpafTp08d0NLdw5syZfL817d69m8TERCpWrEi1atUMJjNv4MCBfPPNN/zyyy+UL18+77wtf39/fH19Daczb9iwYXTs2JFq1apx+vRpvvnmGxYuXMicOXNMRzOufPny552rVbZsWSpVqqRzuICnn36azp07U716dQ4dOsSIESNwOBzcd999pqO5haeeeorrr7+eN998k3vvvZfly5fz+eef8/nnn5uOVjhMX8ZVknz66adWtWrVLC8vL6tVq1bW0qVLTUdyG7///rsFnLf07t3bdDTjLvS+ANZXX31lOppb+Nvf/mZVr17d8vLysoKCgqx27dpZc+fONR3Lbeky8f/q3r27FRoaanl5eVlVqlSxunfvbu3YscN0LLfy66+/Wk2aNLG8vb2tBg0aWJ9//rnpSIXGZlmWZahbiYiIiLiEzsERERGREkcFR0REREocFRwREREpcVRwREREpMRRwREREZESRwVHREREShwVHBERESlxVHBERESkxFHBERERkRJHBUdERERKHBUcERERKXFUcERERKTE+T8O4NJ9xndudAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([-6.93889390e-17+0.00000000e+00j,  1.56237833e+00-4.97156846e+01j,\n",
       "       -4.25850363e-02+6.76869769e-01j, -3.57787605e-02+3.78499750e-01j,\n",
       "       -3.38833476e-02+2.68214314e-01j, -3.30724162e-02+2.08811018e-01j,\n",
       "       -3.26479847e-02+1.71146729e-01j, -3.23973043e-02+1.44937208e-01j,\n",
       "       -3.22366676e-02+1.25553531e-01j, -3.21274678e-02+1.10583469e-01j,\n",
       "       -3.20498259e-02+9.86392214e-02j, -3.19926363e-02+8.88629658e-02j,\n",
       "       -3.19492912e-02+8.06946984e-02j, -3.19156560e-02+7.37527294e-02j,\n",
       "       -3.18890343e-02+6.77676474e-02j, -3.18676064e-02+6.25436991e-02j,\n",
       "       -3.18501078e-02+5.79351310e-02j, -3.18356374e-02+5.38311230e-02j,\n",
       "       -3.18235390e-02+5.01458735e-02j, -3.18133256e-02+4.68118870e-02j,\n",
       "       -3.18046293e-02+4.37753167e-02j, -3.17971683e-02+4.09926624e-02j,\n",
       "       -3.17907237e-02+3.84283836e-02j, -3.17851234e-02+3.60531455e-02j,\n",
       "       -3.17802305e-02+3.38425081e-02j, -3.17759351e-02+3.17759351e-02j,\n",
       "       -3.17721482e-02+2.98360331e-02j, -3.17687971e-02+2.80079622e-02j,\n",
       "       -3.17658219e-02+2.62789733e-02j, -3.17631731e-02+2.46380426e-02j,\n",
       "       -3.17608093e-02+2.30755787e-02j, -3.17586957e-02+2.15831873e-02j,\n",
       "       -3.17568032e-02+2.01534801e-02j, -3.17551069e-02+1.87799179e-02j,\n",
       "       -3.17535858e-02+1.74566815e-02j, -3.17522219e-02+1.61785651e-02j,\n",
       "       -3.17509998e-02+1.49408864e-02j, -3.17499064e-02+1.37394114e-02j,\n",
       "       -3.17489303e-02+1.25702908e-02j, -3.17480619e-02+1.14300056e-02j,\n",
       "       -3.17472926e-02+1.03153207e-02j, -3.17466154e-02+9.22324438e-03j,\n",
       "       -3.17460241e-02+8.15099360e-03j, -3.17455135e-02+7.09596299e-03j,\n",
       "       -3.17450793e-02+6.05569774e-03j, -3.17447177e-02+5.02786934e-03j,\n",
       "       -3.17444257e-02+4.01025357e-03j, -3.17442010e-02+3.00071048e-03j,\n",
       "       -3.17440418e-02+1.99716583e-03j, -3.17439468e-02+9.97593718e-04j,\n",
       "       -3.17439152e-02-3.46944695e-18j, -3.17439468e-02-9.97593718e-04j,\n",
       "       -3.17440418e-02-1.99716583e-03j, -3.17442010e-02-3.00071048e-03j,\n",
       "       -3.17444257e-02-4.01025357e-03j, -3.17447177e-02-5.02786934e-03j,\n",
       "       -3.17450793e-02-6.05569774e-03j, -3.17455135e-02-7.09596299e-03j,\n",
       "       -3.17460241e-02-8.15099360e-03j, -3.17466154e-02-9.22324438e-03j,\n",
       "       -3.17472926e-02-1.03153207e-02j, -3.17480619e-02-1.14300056e-02j,\n",
       "       -3.17489303e-02-1.25702908e-02j, -3.17499064e-02-1.37394114e-02j,\n",
       "       -3.17509998e-02-1.49408864e-02j, -3.17522219e-02-1.61785651e-02j,\n",
       "       -3.17535858e-02-1.74566815e-02j, -3.17551069e-02-1.87799179e-02j,\n",
       "       -3.17568032e-02-2.01534801e-02j, -3.17586957e-02-2.15831873e-02j,\n",
       "       -3.17608093e-02-2.30755787e-02j, -3.17631731e-02-2.46380426e-02j,\n",
       "       -3.17658219e-02-2.62789733e-02j, -3.17687971e-02-2.80079622e-02j,\n",
       "       -3.17721482e-02-2.98360331e-02j, -3.17759351e-02-3.17759351e-02j,\n",
       "       -3.17802305e-02-3.38425081e-02j, -3.17851234e-02-3.60531455e-02j,\n",
       "       -3.17907237e-02-3.84283836e-02j, -3.17971683e-02-4.09926624e-02j,\n",
       "       -3.18046293e-02-4.37753167e-02j, -3.18133256e-02-4.68118870e-02j,\n",
       "       -3.18235390e-02-5.01458735e-02j, -3.18356374e-02-5.38311230e-02j,\n",
       "       -3.18501078e-02-5.79351310e-02j, -3.18676064e-02-6.25436991e-02j,\n",
       "       -3.18890343e-02-6.77676474e-02j, -3.19156560e-02-7.37527294e-02j,\n",
       "       -3.19492912e-02-8.06946984e-02j, -3.19926363e-02-8.88629658e-02j,\n",
       "       -3.20498259e-02-9.86392214e-02j, -3.21274678e-02-1.10583469e-01j,\n",
       "       -3.22366676e-02-1.25553531e-01j, -3.23973043e-02-1.44937208e-01j,\n",
       "       -3.26479847e-02-1.71146729e-01j, -3.30724162e-02-2.08811018e-01j,\n",
       "       -3.38833476e-02-2.68214314e-01j, -3.57787605e-02-3.78499750e-01j,\n",
       "       -4.25850363e-02-6.76869769e-01j,  1.56237833e+00+4.97156846e+01j])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 创建一个样本数组（例如一个正弦波）\n",
    "x = np.linspace(0, 2 * np.pi, 100)\n",
    "y = np.sin(x)\n",
    "\n",
    "# 计算傅里叶变换\n",
    "y_fft = np.fft.fft(y)\n",
    "\n",
    "# 只保留前几个傅里叶系数（例如前10个）\n",
    "# y_fft[3:] = 0\n",
    "\n",
    "# 计算逆傅里叶变换\n",
    "y_fit = np.fft.ifft(y_fft)\n",
    "\n",
    "# 绘制原始数据和拟合数据\n",
    "plt.plot(x, y, label='origin')\n",
    "plt.plot(x, y_fit.real, label='nihe', linestyle='--')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "y_fft\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.19"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
